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
    DatumPlatsPris
    2020-02-20Stockholm15 000 kr
    2020-03-12Stockholm 15 000 kr
    2020-04-02 Stockholm15 000 kr
    2020-04-27Stockholm15 000 kr
    2020-05-18Stockholm15 000 kr

    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.

    Undervisningsspråk

    Vårt tryckta kursmaterial är alltid författat på engelska. Den muntliga presentationen i våra klassrum är som regel på svenska, såvida inte samtliga deltagare samtycker till att vi genomför kursen på engelska.

    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 IntermediateVisa