Introduction
  • Introduction
Multithreading Theory
  • Processes and threads introduction
  • What is time-slicing algorithm?
  • Benefits of multithreading
  • Downside of multithreading
  • Thread life cycle in Java
  • Multithreading theory quiz
Threads Manipulation
  • Sequential processing
  • Starting threads - Runnable
  • Starting threads - Thread class
  • Runnable interface and Thread class
  • Wait for threads to finish - join
  • Daemon threads and user threads
  • Threads manipulation quiz
Inter-Thread Communication
  • Memory management of threads
  • Synchronization
  • Problems with synchronization
  • Locking with custom objects
  • What are re-entrant locks?
  • Wait and notify
  • What is the difference between wait and sleep?
  • Producer and consumer
  • Locks
  • Producer consumer with locks
  • Locks and synchronization
  • Inter-thread communication quiz
Multithreading Concepts
  • Volatile
  • Stopping a thread
  • Deadlock and livelock
  • Deadlock example
  • Livelock example
  • Atomic variables
  • What are semaphores?
  • Mutexes and semaphores
  • Semaphores example
  • Mutex and binary semaphore
  • Multithreading concepts quiz
Creating Threads with Executors
  • Why to use thread pools?
  • Executors example - SingleThreadExecutor
  • Executors example - FixedThreadPools
  • Executors example - ScheduledExecutor
  • Stopping executors
  • What is a Callable interface and Future object?
  • Callable and future example
  • Executors quiz
Concurrent Collections
  • What is the collections framework?
  • Collections synchronization
  • Latch
  • Cyclic barrier
  • Blocking queue
  • Delay queue
  • Priority queue
  • Concurrent maps
  • Exchanger
  • CopyOnWriteArrays
  • Concurrent Collections Quiz
Multithreading Exercise I - Dining Philosophers Problem
  • Dining philosophers problem I - the problem
  • Dining philosophers problems II - constants
  • Dining philosophers problems III - chopstick
  • Dining philosophers problems IV - philosopher
  • Dining philosophers problems V - starting the threads
  • Dining philosophers problems VI - running the simulation
Multithreading Exercise II -Students Library Simulation
  • Student library simulation I - the problem
  • Student library simulation II - constants
  • Student library simulation III - book
  • Student library simulation VI - student
  • Locking: locks () and tryLock()
  • Student library simulation V - running the simulation
Multithreading Exercise III - Miner Game Simulation
  • Miner game implementation I
  • Miner game implementation II
  • Miner game implementation III
  • Miner game implementation IV
  • Miner game implementation V
Parallel Algorithms
  • Parallel methods versus multithreading
  • Merge sort introduction I
  • Merge sort introduction II
  • Sequential merge sort I
  • Parallel merge sort
  • Comparing sorting implementations
  • UPDATE: comparing merge sort algorithms
  • Sum problem introduction
  • Sum problem - sequential approach
  • Sum problem - parallel implementation
  • Comparing sum implementations
  • Parallelization quiz
Fork-Join Framework
  • Fork-join framework introduction
  • Fork-join framework simple example - RecursiveAction
  • Fork-join framework simple example - RecursiveTask