Kurs i Threads och Concurrency med Java

Kurs i programmering med trådar i Java

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
  • 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
Kursinnehåll

Overview of Concurrency

    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 Threads och Concurrency med Java
    Längd2 Dagar
    NivåAdvanced
    Målgrupp Java programmerare
    FörkunskaperPraktiska kunskaper i Java programmering
    Verktyg
    • Java JDK, version 10+
    • JetBrains IntelliJ IDEA
    KursDatum
    DatumPlatsPrisBoka
    Hämtar kursschema...
    15000

    Samma-Företags Rabatt

    Vi ger 20% rabatt för tillkommande deltagare från samma företag vid samma kurs-tillfälle. Läs mer här.

    Företagsintern Kurs

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

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

    Relaterade Kurser
    KursDagarNivå
    Java Programmering5BeginnerVisa
    Java Programmering Fördjupning3IntermediateVisa
    Java för REST webbtjänster3 Intermediate Visa