Concurrency, Multithreading and Parallel Computing in Java
- 4.5
Brief Introduction
Multithreading and Concurrent Programming, Parallel Computation and MapReduce in Java + Fork-Join and Stream APIDescription
This course is about the basics of multithreading and concurrent programming with some parallel concepts. In the 21st century this topic is becoming more and more popular with the advent of Big Data and Machine Learning. We will consider the low level concepts such as threads, synchronization and locks. The second chapter will be about concurrent library: of course there are built in classes and interfaces that we can use when implementing multithreaded applications. Then we develope little programs as show-cases for multithreading: the dining-philosopher problem or the students in library simulation. Last chapter is about parallel computing and MapReduce.
Section 1 - Multithreading Theory:
theory behind multithreading
pros and cons of multithreading
life cycle of a thead
Section 2 - Threads Manipulation:
starting threads (Runnable interface and Thread class)
join keyword
daemon threads
Section 3 - Inter-Thread Communication:
memory management of threads
synchronization and synchronized blocks
locks
wait and notify
producer-consumer problem and solution
concurrent collections
latch, cyclic barrier and blocking queues
delay queue, priority queue and concurrent maps
Section 4 - Multithreading Concepts:
volatile keywords
deadlocks and livelocks
semaphores and mutexes
dining philosophers problem
library application
miner game
Section 6 - Executors and ExecutorServices:
executors
executor services
Section 6 - Concurrent Collections:
synchronization with Collections
latches
cyclic barriers
delay and priority queues
concurrent HashMaps
CopyOnWriteArrayLists
Section 7 - Simulations:
dining philosophers problem
library problem
Section 8 - Parallel Algorithms:
what is parallel computing
parallel merge sort
parallel algorithms
Section 9 - Fork-Join Framework
Fork-Join framework
maximum finding in parallel manner
Section 10 - Stream API
the Stream API explained with examples
sequential streams and parallel streams
Section 11 - BigData and MapReduce:
what is MapReduce
MapReduce and Fork-Join framework
Thanks for joining my course, let's get started!
Requirements
- Requirements
- Basic Java (inheritance, object oriented programming)