Kurs i

Java Threads and Concurrent Programming

I denna kurs får du lära dig allt du behöver veta (och lite till) om concurrency och trådprogrammering i Java. Du får lära dig om såväl det klassiska stödet för trådar i Java, som det nya API:et i Java 7. Du får lära dig om de klassiska concurrency problem och hur de motverkas i Java-kod. Förutom att lära dig om hur man implementera meddelandesändning, får du lära dig om futures, fork-join concurrency och mycket mera.

Detta får du lära dig på kursen
  • Förstå och kunna hantera problem baserat på critical-sections, race-conditions och deadlocks
  • Kunna designa ett flertrådat program med meddelandesänding
  • Kunna använda thread pools
  • Kunna designa program som använder fork-join concurrency
Innehåll

Overview of Concurrency

Kort om vilka begrepp som finns inom området och hur thread skiljer sig från process och vad vi menar med concurrent respektive parallel.

Threads in Java

  • Usage of class Thread
  • Usage of interface Runnable
  • Life-cycle methods
  • How to interrupt, but not stop, a thread

Critical Sections

  • The Bank problem
  • What is a critical section
  • What is a mutex lock
  • Riboe's conditions for critical sections
  • Using synchronized blocks and methods in Java

Race Conditions

  • The MailBox problem
  • What is condition/event synchronization
  • The minimal amount of code to safely send a message from one thread to another
  • Using wait and notify
  • Understanding the difference between notify and notifyAll
  • A few words about monitor semantics
  • Possible livelock with careless usage of notify

Deadlocks

  • What is a resource
  • Starvation
  • What is a deadlock
  • Coffman's conditions for deadlocks
  • Preventing deadlocks
  • Dealing with deadlocks
  • How the JVM detect deadlocks

Uni-Directional Message-Passing

  • Design of a blocking message queue
  • Thread safe queues in the Java API
  • Design and implementation of MessageQueue and MessageThread

Bi-Directional Message-Passing

  • What is rendezvous
  • Implementation of rendezvous
  • What is a future and how can it be used
  • Realizing N --> 1 and 1 --> N communication patterns

Thread Pools

  • The Executors framework
  • Callable and Executor
  • ExecutorService
  • Adapting the pool size to the number of processing units
  • Typical tasks for thread pools

Fork-Join

  • What is fork-join concurrency
  • Designing a fork-join task
  • Using a fork-join pool and schedule many tasks
  • Typical tasks for fork-join pools

Atomic Data-Types

  • What is an atomic type
  • AtomicInteger and friends

Lock and Synchronization Classes

  • How to use read-write locks
  • How to use dedicated lock and synchronization objects
  • Barriers, latches, phasers and other fun synchronizators
  • Semaphores
  • Optimistic locks
SnabbFakta
Namn
Java Threads and Concurrent Programming
Längd
2 dagar
Nivå
Advanced
Målgrupp
Java programmerare
Förkunskaper
Praktiska erfarenheter av Java programming
Teknisk miljö
  • Java JDK, senaste versionen
  • En texteditor för programutveckling
  • JetBrains IntelliJ IDEA, senaste versionen
  • Windows
Relaterade Kurser
Kurs LängdNivå
Java Basics4 dagarBeginner
Java Intermediate3 dagar Intermediate
Java for REST Web Services Apps2 dagar Advanced
Schemalagd Kurs

Pris

14000 kr + moms

Vi ger 20% rabatt för tillkommande deltagare från samma företag på samma kurstillfälle. Läs mer om vår samma-företags-rabatt.

Just nu har vi inga kursdatum planerade för denna kurs. Vi lägger ut kursdatum löpande, så titta förbi denna sida litet senare.

Du kan också välja att prenumerera på vårt nyhetsbrev för att bli notifierad om nya kursdatum.

Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era egna lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Prisexempel för NN deltagare

PPP kr + moms

Antal
Område

Läs mer om vår prismodell och beställningsvillkor.