Java Concurrent Programming
Location: Room 108, 德田館
Time: 1300 ~ 1600
``xxx''
-- xxx
Instructor
Objectives
- Comprehend design patterns widely used in large-scale projects
- Learn generics, annotations, and reflection, Stream APIs (with lambdas), and Optional APIs
- Start your first web application powered by Spring Boot
- Exploit concurrent programming with Concurrency API
Prerequisites
Working Environment
Recording Classroom Lectures Policy
Recording of classroom lectures is prohibited unless advance written permission is obtained from the class instructor and any guest presenter(s).
Overview
Concurrent Programming
- Java Virtual Machine (JVM)
- Basic concepts of operating systems (OS)
- Process & thread
- Job scheduling: round-robin (RR)
- Thread & Runnable
- Race condition, mutual exclusion & synchronized methods/blocks
- Producer-consumer problem (bounded-buffer problem) & semaphores
- Dining philosophers: deadlock, livelock, starvation
- High-level concurrency framework:
- Thread pools
- Fork-join pools
- Asynchronous computation
- Concurrent data structures, atomic variables, synchronizers, monitor locks
Schedule
Concurrent Programming
- Basics of operating systems (OS)
- Java threads pdf
- (FYR) Java concurreny tutorial link
- Race condition: code
- Parallelism is always good? code and Amdahl's law
- Application (feat. parallel stream) code
- Sychronization pdf code
- Concurrent application pdf code
- More Java socket programming examples: link
- Java concurrency framework
- Popcorny Lu, Java 多執行緒的基本知識 code
- 20 Examples of Using Java’s CompletableFuture link
- Multi-Threading in Spring Boot Using CompletableFuture link
- (FYR) Dmitry Aleksandrov, Programming the GPU in Java, 2020 link
References
Concurrent Programming
- Brian Goetz, Java Concurrency in Practice, 2006

- Maurice Herlihy, Nir Shavit, Victor Luchangco, and Michael Spear, The Art of Multiprocessor Programming, 2/e, 2020

- Carlo A. Furia, Concurrent Programming - TDA383/DIT390, Chalmers University of Technology, 2017
- Shan He, SSC: Networks/Concurrency 2014/2015, School of Computer Science, University of Birmingham
- Jeff Preshing, An Introduction to Lock-Free Programming, 2012
- Liam O'Connor, COMP3151/9154 Foundations of Concurrency, 2020
Parallel Computing
Operating System