Java: Concurrent Programming (JAV4)

Programming, Java, Spring

The audiences are supposed to be more experienced. Although the terminology and used concepts (like a thread, race conditions etc.) are repeated briefly as part of the introduction and the starting point, the audiences should have basic understanding for those core concepts.

COURSE LOCATION AND AVAILABLE DATES



This course is not scheduled as a public course.
It is delivered exclusively as customised training. The content, duration, date, and delivery format are tailored to the customer's requirements and can also be provided in English.

Request customised training

Course content:

Hide details
  • Introduction in concurrency
    1. Thread, multithreading, parallel processing
    2. Benefits and pitfalls; race conditions, deadlocks, livelocks, performance considerations
  • Execution model
    1. Execution order, ordering rules, memory visibility
    2. Java Memory Model, happens-before relation
    3. Exploiting the Java execution model
  • Concurrency in theory
    1. State management, immutability
    2. Confinement and confining techniques
    3. Safe publishing
  • Concurrency in practice
    1. Idioms: double-checked locking, lazy initialization holder, final wrapper
    2. Instance pooling
    3. Designing a thread-safe class; design considerations and pitfalls
  • Basic threading support
    1. Monitors: JVM and Java, using intrinsic locks and conditions
    2. Threads, blocking, and interruptions
    3. JVM shutdown
  • Threading framework
    1. Thread pools, Executor framework, Fork Join Pool
    2. Task-based approach, scheduling, futures
    3. Cancellation problem
  • Building blocks
    1. Light-weight synchronization: atomic variables, volatiles
    2. Synchronization primitives: locks, semaphores, barriers, counters, phasers etc.
    3. Synchronized and concurrent collections
  • Concurrent problems
    1. Deadlocks, livelocks, starvation: causes and solutions, techniques
    2. Amdahl’s Law, cost of concurrency, performance considerations
    3. Common bottlenecks, optimization strategies
    4. Non-blocking techniques
  • Some other frameworks
    1. NIO: non-blocking I/O
    2. NIO.2: asynchronous I/O
    3. Fork Join Pool, support for asynchronous tasks
Recommended previous course:
Java – Advanced Programming Techniques (JAV2)
Recommended follow-up course:
Java under the Hood (JAV5)
Schedule:
2 days (9:00-17:00)

Training and learning environment