Motivation

With the spread of multicore processors, parallel programming is also becoming increasingly important. Even those who do not want to worry about hardware or performance aspects can no longer avoid concurrency. This is because every classic (Java) server application already processes requests in parallel in several threads and must take into account the important basic principles of concurrent programming.

Threads have a reputation for being complicated in theory, elusive in execution, and unpredictable in practice. This course shows how the direct handling of (low-level) threads today has essentially given way to other concepts such as thread pools, synchronizers and thread-safe data structures. You will learn how to program much easier, more elegantly and more securely with their help. Thus, you will get a comprehensive overview of the current Java concurrency API and deepen selected concepts in it using simple and illustrative hands-on examples.

Program

The main focus of the course is on the visualization of threads, making their behavior “tangible”, as well as active programming with the help of the modern Java Concurrency API. In order to do so, a simple visualization solution called Thread Visualizer has been created by SimplexaCode specifically for this purpose. It can illustrate almost any multithreading concept in real time. The easy-to-program demonstrations and associated background information on concurrent programming promise guaranteed aha experiences.

  • Day 1 | Fundamentals and Locking
    • introduction to threads and the Thread Visualizer
    • threads vs. executors and thread pools
    • safe and compliant interruption of threads
    • locking principles
    • thread-safe data structures
  • Day 2 | Advanced Concepts
    • the Fork/Join Framework
    • CompletableFuture
    • special synchronizers
    • stream parallelization
    • outlook on Virtual Threads and Structured Concurrency (since Java 19)

Course Objectives

The aim of the course is to familiarize you with the basic structures of the modern Java Concurrency API, to make it easier for you to deal with the topic of multithreading, and to give you the most important utility classes to hand. You will see the benefits and dangers of parallel programming and will be able to better assess whether and where the use of concurrent programming is really worthwhile.

Target Groups

  • Java software developers with at least one year of programming experience

Instructor

Christian Heitzmann is a Java-, Python- and Spring-certified software developer with a CAS in Machine Learning and owner of SimplexaCode in Lucerne. He has been developing software for over 20 years and has been teaching classes and courses for over 12 years in the areas of Java and Python programming, mathematics, and algorithms. As a technical writer, he documents software architectures for companies and regularly writes articles for IT journals.

Parallele Programmierung in Java

Shortlink to this page: link.simplexacode.ch/zjxu2024.03