21 Multithreading and Concurrency
21.1 The Multicore Future
21.2 Basic Threads
21.2.1 Problems with Threads
21.2.1.1 Race Conditions
21.2.1.2 Deadlock
21.2.2 Synchronization
21.2.3 Wait/Notify
21.2.4 Other Thread Methods
21.3 Concurrency Library
21.3.1 Executors and Executor Services
21.3.2 Callable and Futures
21.3.3 Parallel Data Structures
21.3.3.1 Shared Barriers
21.3.3.2 The Exchange
21.3.3.3 Assembly Line
21.3.3.4 Ticketed Passengers
21.3.3.5 Other Threadsafe Types
21.3.4 Atomic (java.util.concurrent.atomic)
21.3.5 Locks (java.util.concurrent.locks)
21.4 Parallel Collections
21.5 Introduction to Scala Actors
21.6 Multithreaded Mandelbrot (Project Integration)
21.7 Multithreading in GUIs
21.8 Animated Bouncing Balls (Project Integration)