Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background...
Transcript of Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background...
![Page 1: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/1.jpg)
Background on Concurrency &
Parallelism in Java (Part 1)
Douglas C. [email protected]
www.dre.vanderbilt.edu/~schmidt
Professor of Computer Science
Institute for Software
Integrated Systems
Vanderbilt University
Nashville, Tennessee, USA
![Page 2: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/2.jpg)
2
Learning Objectives in this Part of the Lesson• Understand the meaning of the
terms concurrency & parallelism
join join join join
Sub-Task1.1 Sub-Task1.2 Sub-Task2.1 Sub-Task2.2
fork fork forkfork
join join
join
Sub-Task1 Sub-Task2
forkfork
Task
![Page 3: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/3.jpg)
3
An Overview of Concurrency
![Page 4: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/4.jpg)
4
An Overview of Concurrency
See en.wikipedia.org/wiki/Concurrency_(computer_science)
• Concurrency is a form of computing where threads can run simultaneously
![Page 5: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/5.jpg)
5
An Overview of Concurrency• Concurrency is a form of computing where threads can run simultaneously
See docs.oracle.com/javase/tutorial/essential/concurrency/threads.html
new Thread(() ->
someComputations());
A Java threads are units of execution for instruction streams that can run
concurrently on processor cores
![Page 6: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/6.jpg)
6
• Concurrency is a form of computing where threads can run simultaneously
• Often used to offload work from the user interface (UI) thread to background thread(s)
An Overview of Concurrency
See developer.android.com/topic/performance/threads.html
UI thread
background threads
![Page 7: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/7.jpg)
7
• Concurrency is a form of computing where threads can run simultaneously
• Often used to offload work from the user interface (UI) thread to background thread(s), e.g.
• Background thread(s) can block
• The UI thread does not block
An Overview of Concurrency
See developer.android.com/training/multiple-threads/communicate-ui.html
UI thread
background threads
![Page 8: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/8.jpg)
8
An Overview of Concurrency• Concurrent Java threads interact via shared objects and/or message passing
See docs.oracle.com/javase/8/docs/api/?java/util/concurrent/package-summary.html
write()
read()
send()
recv()
![Page 9: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/9.jpg)
9
An Overview of Concurrency• Concurrent Java threads interact via shared objects and/or message passing
• Shared objects
• Synchronize concurrent operations on objects so object state remainscoherent after each operation
See tutorials.jenkov.com/java-concurrency/thread-safety.html
write()
read()
send()
recv()
T2T3Awaiting lock
Critical Section
Running Thread
T1
Lock acquired
Lock released
![Page 10: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/10.jpg)
10
An Overview of Concurrency• Concurrent Java threads interact via shared objects and/or message passing
• Shared objects
• Synchronize concurrent operations on objects so object state remainscoherent after each operation
• Examples of Java synchronizers:
• Synchronized statements/methods
• Reentrant locks & intrinsic locks
• Atomic operations
• Semaphores & condition objects
• “Compare-and-swap” (CAS)operations in sun.misc.unsafe
See dzone.com/articles/the-java-synchronizers
write()
read()
send()
recv()
![Page 11: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/11.jpg)
11
An Overview of Concurrency• Concurrent Java threads interact via shared objects and/or message passing
• Shared objects
• Message passing
• Send message(s) from producerthread(s) to consumer thread(s)via a thread-safe queue
See en.wikipedia.org/wiki/Message_passing
write()
read()
send()
recv()
![Page 12: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/12.jpg)
12
An Overview of Concurrency• Concurrent Java threads interact via shared objects and/or message passing
• Shared objects
• Message passing
• Send message(s) from producerthread(s) to consumer thread(s)via a thread-safe queue
• Examples of Java thread-safe queues
• Array & linked blocking queues
• Priority blocking queue
• Synchronous queue
• Concurrent linked queue
See docs.oracle.com/javase/tutorial/collections/implementations/queue.html
write()
read()
send()
recv()
![Page 13: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/13.jpg)
13
• Key goals of using shared objects and/or message passing are to share resources safely/efficiently & avoid hazards
An Overview of Concurrency
See en.wikipedia.org/wiki/Thread_safety
![Page 14: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/14.jpg)
14See en.wikipedia.org/wiki/Race_condition#Software
• Key goals of using shared objects and/or message passing are to share resources safely/efficiently & avoid hazards, e.g.
• Race conditions
• Race conditions occur when a program depends upon the sequence or timing of threadsfor it to operate properly
An Overview of Concurrency
write()
read()
![Page 15: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/15.jpg)
15
An Overview of Concurrency
See github.com/douglascraigschmidt/LiveLessons/tree/master/BuggyQueue
This test program induces race conditions due to lack of synchronization between producer & consumer threads accessing a bounded queue
write()
read()
• Key goals of using shared objects and/or message passing are to share resources safely/efficiently & avoid hazards, e.g.
• Race conditions
• Race conditions occur when a program depends upon the sequence or timing of threadsfor it to operate properly
![Page 16: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/16.jpg)
16
An Overview of Concurrency• Key goals of using shared objects and/or
message passing are to share resources safely/efficiently & avoid hazards, e.g.
• Race conditions
• Memory inconsistencies
• These errors occur when different threads have inconsistent views ofwhat should be the same data
See jeremymanson.blogspot.com/2007/08/atomicity-visibility-and-ordering.html
![Page 17: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/17.jpg)
17
An Overview of Concurrency• Key goals of using shared objects and/or
message passing are to share resources safely/efficiently & avoid hazards, e.g.
• Race conditions
• Memory inconsistencies
• Deadlocks
• Occur when 2+ competing threads are waiting for the other(s) to finish, & thus none ever do
T2T1
<<owns>>
<<owns>> <<needs>>
<<needs>>
L1
L2
See en.wikipedia.org/wiki/Deadlock
![Page 18: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/18.jpg)
18
An Overview of Parallelism
![Page 19: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/19.jpg)
19
An Overview of Parallelism• Parallelism is a form of computing that
performs several steps on multipleprocessor cores
See en.wikipedia.org/wiki/Parallel_computing
join join
join
Processsequentially
Processsequentially
Processsequentially
Processsequentially
Sub-task1.1 Sub-task1.2 Sub-task2.1 Sub-task2.2
Sub-task1 Sub-task2
fork()
Task
fork() fork()
![Page 20: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/20.jpg)
20
• Parallelism is a form of computing thatperforms several steps on multipleprocessor cores, i.e.
• Split – partition a task into sub-tasks
An Overview of Parallelism
join join
join
Processsequentially
Processsequentially
Processsequentially
Processsequentially
Sub-task1.1 Sub-task1.2 Sub-task2.1 Sub-task2.2
Sub-task1 Sub-task2
fork()
Task
fork() fork()
![Page 21: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/21.jpg)
21
• Parallelism is a form of computing thatperforms several steps on multipleprocessor cores, i.e.
• Split – partition a task into sub-tasks
• Apply – Run independent sub-tasks in parallel
An Overview of Parallelism
Processsequentially
Processsequentially
Processsequentially
Processsequentially
Sub-task1.1 Sub-task1.2 Sub-task2.1 Sub-task2.2
Sub-task1 Sub-task2
fork()
Task
fork() fork()
join join
join
![Page 22: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/22.jpg)
22
• Parallelism is a form of computing thatperforms several steps on multipleprocessor cores, i.e.
• Split – partition a task into sub-tasks
• Apply – Run independent sub-tasks in parallel
• Combine – Merge the sub-results from sub-tasks into one final result
An Overview of Parallelism
join join
join
Processsequentially
Processsequentially
Processsequentially
Processsequentially
Sub-task1.1 Sub-task1.2 Sub-task2.1 Sub-task2.2
Sub-task1 Sub-task2
fork()
Task
fork() fork()
![Page 23: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/23.jpg)
23
• A key goal of parallelism is to efficientlypartition tasks into sub-tasks & combine results
An Overview of Parallelism
![Page 24: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/24.jpg)
24
• A key goal of parallelism is to efficientlypartition tasks into sub-tasks & combine results
• Parallelism thus focuses on optimizing performance
• e.g., throughput, scalability, & latency
See www.ibm.com/developerworks/library/j-java-streams-4-brian-goetz
An Overview of Parallelism
![Page 25: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/25.jpg)
25
• A key goal of parallelism is to efficientlypartition tasks into sub-tasks & combine results
• Parallelism thus focuses on optimizing performance
• Parallelism works best when threads share no mutable state & don’t block
See henrikeichenhardt.blogspot.com/2013/06/why-shared-mutable-state-is-root-of-all.html
An Overview of Parallelism
join join
join
Processsequentially
Processsequentially
Processsequentially
Processsequentially
Sub-task1.1 Sub-task1.2 Sub-task2.1 Sub-task2.2
Sub-task1 Sub-task2
fork()
Task
fork() fork()
![Page 26: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/26.jpg)
26
• A key goal of parallelism is to efficientlypartition tasks into sub-tasks & combine results
• Parallelism thus focuses on optimizing performance
• Parallelism works best when threads share no mutable state & don’t block
• Hence Java 8’s emphasis on“fork-join” & “work-stealing”
An Overview of Parallelism
join join
join
Processsequentially
Processsequentially
Processsequentially
Processsequentially
Sub-task1.1 Sub-task1.2 Sub-task2.1 Sub-task2.2
Sub-task1 Sub-task2
fork()
Task
fork() fork()
See en.wikipedia.org/wiki/Fork-join_model & en.wikipedia.org/wiki/Work_stealing
![Page 27: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/27.jpg)
27
• Brian Goetz has an excellent talkabout the evolution of Java fromconcurrent to parallel computing
See www.youtube.com/watch?v=NsDE7E8sIdQ
An Overview of Parallelism
![Page 28: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/28.jpg)
28See www.infoq.com/presentations/parallel-java-se-8
• Brian Goetz has an excellent talkabout the evolution of Java fromconcurrent to parallel computing
His talk emphasizes that Java 8 combines functional programming with fine-grained data parallelism to leverage many-core processors
An Overview of Parallelism
![Page 29: Background on Concurrency & Parallelism in Java (Part 1)schmidt/cs891f/2018-PDFs/01-background … · Learning Objectives in this Part of the Lesson •Understand the meaning of the](https://reader035.fdocuments.us/reader035/viewer/2022062604/5fb3b463e4772f44b263652f/html5/thumbnails/29.jpg)
29
End of Background on Java Concurrency & Parallelism (Part 1)