SlideShare ist ein Scribd-Unternehmen logo
1 von 24
CONCURRENT PROGRAMMING
THREAD’S BASICS
PROGRAMMAZIONE CONCORRENTE E DISTR.
Università degli Studi di Padova
Dipartimento di Matematica
Corso di Laurea in Informatica, A.A. 2015 – 2016
rcardin@math.unipd.it
Programmazione concorrente e distribuita
SUMMARY
 Introduction
 Thread basics
 Thread properties
 Thread states
 Thread interruption
 Sequence diagrams
2Riccardo Cardin
Programmazione concorrente e distribuita
INTRODUCTION
 Multitasking
 The ability to have more than a program working at
what seems like the same time
 The unity of this type of programming is a process
 A process has its own variables
 Communication between process is accomplished using
messages sent over a common channel (i.e. a socket)
 Very hard to accomplish and no so performant
 Types
 Cooperative: CPU control is left to the processes
 Time-sliced: the OS (scheduler) assigns a time slice to each
process
3Riccardo Cardin
Programmazione concorrente e distribuita
INTRODUCTION
 Multithread
 A programming model that allows multiple threads to
exists within the same context of a single process
 Every process will appear to do multiple tasks
 Threads share the same data and variables
 Every process as a main thread
 This thread can create other threads, called secondary
 Every thread as a priority order (1 .. 10)
 Types
 Cooperative
 Time-sliced: thread scheduling is left to the main thread, that
uses OS utilities
4Riccardo Cardin
Programmazione concorrente e distribuita
INTRODUCTION
5Riccardo Cardin
Programmazione concorrente e distribuita
INTRODUCTION
6Riccardo Cardin
Process
Memory
Thread 1
Task Task
Thread 2
Task
Thread 3
Task
Threads
share the
same
memory
chunks
Every thread
could be reused
to execute
different tasksThreads are
lighter than
processes, even
so their creation
is still time-
consuming
Each process
can execute
many threads
Threads are a
mechanism provided
by the OS
Programmazione concorrente e distribuita
DEFINITION
 Multithread programming
 A programming model that allows multiple threads to
exists within the same context of a single process
 Responsiveness
 Faster execution
 Lower resource consumption
 Parallelization
 Java has built-in support for concurrent programming
7Riccardo Cardin
A thread is the smallest sequence of programmed instructions that can
be managed independently. Multiple thread can exist within the same
process, executing concurrently and share resources such as memory.
- Wikipedia
Programmazione concorrente e distribuita
THREAD BASICS
 Threads in Java are the primitives that actually
execute tasks
 Runnable interface describes a task you want to
run, usually concurrently with others
 The code of the run method will be executed in a thread
 Tasks are short lived, so you don’t waste the time to start a
thread
8Riccardo Cardin
public interface Runnable {
void run();
}
Runnable task = () -> {
int i = 0;
while (i < 1000) i++;
}
new Thread(task).start(); // A thread running a task
Programmazione concorrente e distribuita
THREAD BASICS
 You should decouple the task that is to be run in
parallel from the mechanism of running it
 You can also define a subclass of Thread, but this
approach is no longer recommended
 If you have many task is to expensive create a single thread
for each one
 Do not call the run method on Thread or Runnable
instances
 The task is merely executed in the same thread
9Riccardo Cardin
class MyThread extends Thread {
public void run() {
// task code, don’t do this!!!
}
}
Programmazione concorrente e distribuita
THREAD BASICS
10Riccardo Cardin
Programmazione concorrente e distribuita
THREAD BASICS
 The main method executes in the main thread
 From the main thread they can be executed other
thread, called secondary
 They execute in pararrel wrt the main thread
 Threads can be of two type
 User threads
 JVM stops when there are no more user thread executing
 Deamon threads
 A deamon stops when its user thread stops
11Riccardo Cardin
public class Example {
public static void main(String[] args) {
// This code runs inside the main thread
}
}
Programmazione concorrente e distribuita
THREAD PROPERTIES
 Thread priorities
 Use setPriority method to give a thread a priority
 MIN_PRIORITY = 1 and MAX_PRIORITY = 10
 Don’t use priorities, they are too highly system-dependent
 Deamon threads
 Use setDeamon method
 Its only role is to serve other threads
 When only deamon threads remain, the JVM exits
 Handlers for uncaught exceptions
 The run method cannot throw any checked ex.
 Install an UncaughtExceptionHandler to manage ex.
12Riccardo Cardin
Programmazione concorrente e distribuita
THREAD STATES
 6 thread states
 New
 Runnable
 Blocked
 Waiting
 Time waiting
 Terminated
 Use getState
method
 Thread.State
13
No resources
associated
Runnable ≠
Running
Programmazione concorrente e distribuita
THREAD STATES
 New threads
 Just created with the new operator. Not yet running
 Runnable threads
 Once the start method is invoked.
 Resource creation, scheduling
 run method is invoked
 It may or not actually be running
 DO NOT CALL RUN METHOD DIRECTLY!
14Riccardo Cardin
public static void main(String[] args) {
// Not concurrent, but sequential
new MyThread().run();
for (int i = 0; i < 200; i++)
System.out.println("Cycle - " + i);
}
Programmazione concorrente e distribuita
THREAD STATES
 Blocked and Waiting threads
 Temporarily inactive
 A thread becomes blocked when it tries to acquire an
intrinsic object lock
 When a thread waits for another thread to notify of a
condition, it enters the waiting state
 The calling of a timeout parameters causes the thread to
enter the timed waiting (Thread.sleep)
 A thread waits for another thread to finish, calling the join
method on it
 Terminated threads
 It is not possible to reborn a thread in this state
15Riccardo Cardin
Programmazione concorrente e distribuita
THREADS INTERRUPTION
 A thread terminates when it’s run method:
 Returns by executing a return statement
 After executing the last statement in method body
 If an unhandled exception occurs
 It is possible to send an interruption request
 Use the interrupt method
 Thread states becomes interrupted, but thread is not
interrupted by the JVM
 Thread should check whether it has been interrupted
16Riccardo Cardin
while (!Thread.currentThread().isInterrupted() && more work to do) {
// do more work
}
Programmazione concorrente e distribuita
THREADS INTERRUPTION
 Waiting for another thread to finish
 Use join() or join(long millis)
 An instance of the joining thread must be available
 Passing a time interval to the method has the effect to limit
the waiting period to millis milliseconds
17Riccardo Cardin
Thread thread = new Thread(() -> {
// Do some heavy work
});
thread.start();
try {
// Waiting for at max 1 second the termination of thread
thread.join(1000L);
} catch(InterruptedException e) {
// thread was interrupted during sleep
} finally {
// cleanup, if required
}
Programmazione concorrente e distribuita
THREADS INTERRUPTION
 Implementing collaborative preemption
 Thread.yield() notifies the system that the current
thread is willing to "give up the CPU" for a while.
 Thread scheduler will select a different thread to run
 If no other thread is present, the statement has no effect
 When to use yield()? Practically NEVER
 Use Thread.sleep() (requires some self-computation)
 Use synchronization mechanisms if waiting for a process or
a resource
18Riccardo Cardin
while ( /* more work to do */ ) {
// do more work
Thread.yield();
}
Programmazione concorrente e distribuita
THREADS INTERRUPTION
 Interrupting a thread simply grabs its attention
 Use Thread.sleep(long time) to suspend
temporarily the thread
 If the interrupted thread was sleeping or waiting for
something, an InterruptedException is thrown
 ...and the thread status is cleared!
19Riccardo Cardin
try {
while ( /* more work to do */ ) {
// do more work
Thread.sleep(delay);
}
} catch(InterruptedException e) {
// thread was interrupted during sleep
} finally {
// cleanup, if required
}
Programmazione concorrente e distribuita
THREADS INTERRUPTION
20Riccardo Cardin
Programmazione concorrente e distribuita
SEQUENCE DIAGRAMS
 How can we reason about thread visually?
 UML gives use sequence diagrams
21Riccardo Cardin
Partecipant
Timepassing
Life line
Programmazione concorrente e distribuita
SEQUENCE DIAGRAMS
22Riccardo Cardin
A sequence diagram describes the cooperation between a group of
objects that have to interact with each other to fulfill an objective
Definition
Message
Find message
Internal call
Return
Object
creation
Programmazione concorrente e distribuita
EXAMPLES
23Riccardo Cardin
https://github.com/rcardin/pcd-snippets
Programmazione concorrente e distribuita
REFERENCES
 Chap. 14 «Multithreading», Core Java Volume I - Fundamentals, Cay
Horstmann, Gary Cornell, 2012, Prentice Hall
 Thread.yield
http://www.javamex.com/tutorials/threads/yield.shtml
 What are the main uses of yield(), and how does it differ from join()
and interrupt()?
http://stackoverflow.com/questions/6979796/what-are-the-main-
uses-of-yield-and-how-does-it-differ-from-join-and-interr
 Chap. 10 «Concurrent Programming», Core Java for the Impatient,
Cay Horstmann, 2015, Addison-Wesley
24Riccardo Cardin

Weitere ähnliche Inhalte

Was ist angesagt?

Java session13
Java session13Java session13
Java session13Niit Care
 
Generics and collections in Java
Generics and collections in JavaGenerics and collections in Java
Generics and collections in JavaGurpreet singh
 
Spin Locks and Contention : The Art of Multiprocessor Programming : Notes
Spin Locks and Contention : The Art of Multiprocessor Programming : NotesSpin Locks and Contention : The Art of Multiprocessor Programming : Notes
Spin Locks and Contention : The Art of Multiprocessor Programming : NotesSubhajit Sahu
 
CS844 U1 Individual Project
CS844 U1 Individual ProjectCS844 U1 Individual Project
CS844 U1 Individual ProjectThienSi Le
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with javaHoang Nguyen
 
Concurrency: Best Practices
Concurrency: Best PracticesConcurrency: Best Practices
Concurrency: Best PracticesIndicThreads
 
System Verilog Functional Coverage
System Verilog Functional CoverageSystem Verilog Functional Coverage
System Verilog Functional Coveragerraimi
 
Advanced Reflection in Java
Advanced Reflection in JavaAdvanced Reflection in Java
Advanced Reflection in Javakim.mens
 
Introduction to-vhdl
Introduction to-vhdlIntroduction to-vhdl
Introduction to-vhdlNeeraj Gupta
 
Unit I Advanced Java Programming Course
Unit I   Advanced Java Programming CourseUnit I   Advanced Java Programming Course
Unit I Advanced Java Programming Courseparveen837153
 
JavaFX In Practice
JavaFX In PracticeJavaFX In Practice
JavaFX In PracticeRichard Bair
 
Strategy and Template Pattern
Strategy and Template PatternStrategy and Template Pattern
Strategy and Template PatternJonathan Simon
 

Was ist angesagt? (16)

Java - Sockets
Java - SocketsJava - Sockets
Java - Sockets
 
Java session13
Java session13Java session13
Java session13
 
Generics and collections in Java
Generics and collections in JavaGenerics and collections in Java
Generics and collections in Java
 
Threading in java - a pragmatic primer
Threading in java - a pragmatic primerThreading in java - a pragmatic primer
Threading in java - a pragmatic primer
 
Spin Locks and Contention : The Art of Multiprocessor Programming : Notes
Spin Locks and Contention : The Art of Multiprocessor Programming : NotesSpin Locks and Contention : The Art of Multiprocessor Programming : Notes
Spin Locks and Contention : The Art of Multiprocessor Programming : Notes
 
CS844 U1 Individual Project
CS844 U1 Individual ProjectCS844 U1 Individual Project
CS844 U1 Individual Project
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with java
 
Concurrency: Best Practices
Concurrency: Best PracticesConcurrency: Best Practices
Concurrency: Best Practices
 
System Verilog Functional Coverage
System Verilog Functional CoverageSystem Verilog Functional Coverage
System Verilog Functional Coverage
 
Advanced Reflection in Java
Advanced Reflection in JavaAdvanced Reflection in Java
Advanced Reflection in Java
 
Designing Better API
Designing Better APIDesigning Better API
Designing Better API
 
Introduction to-vhdl
Introduction to-vhdlIntroduction to-vhdl
Introduction to-vhdl
 
javarmi
javarmijavarmi
javarmi
 
Unit I Advanced Java Programming Course
Unit I   Advanced Java Programming CourseUnit I   Advanced Java Programming Course
Unit I Advanced Java Programming Course
 
JavaFX In Practice
JavaFX In PracticeJavaFX In Practice
JavaFX In Practice
 
Strategy and Template Pattern
Strategy and Template PatternStrategy and Template Pattern
Strategy and Template Pattern
 

Andere mochten auch

Design Pattern Strutturali
Design Pattern StrutturaliDesign Pattern Strutturali
Design Pattern StrutturaliRiccardo Cardin
 
Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design PatternRiccardo Cardin
 
Errori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiErrori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiRiccardo Cardin
 
Presto updates to 0.178
Presto updates to 0.178Presto updates to 0.178
Presto updates to 0.178Kai Sasaki
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo Cardin
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo Cardin
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics ProgrammingRiccardo Cardin
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionRiccardo Cardin
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections frameworkRiccardo Cardin
 
Scala - the good, the bad and the very ugly
Scala - the good, the bad and the very uglyScala - the good, the bad and the very ugly
Scala - the good, the bad and the very uglyBozhidar Bozhanov
 
SOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignSOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignRiccardo Cardin
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java ProgrammersEnno Runne
 

Andere mochten auch (14)

Design Pattern Strutturali
Design Pattern StrutturaliDesign Pattern Strutturali
Design Pattern Strutturali
 
Diagrammi di Sequenza
Diagrammi di SequenzaDiagrammi di Sequenza
Diagrammi di Sequenza
 
Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design Pattern
 
Diagrammi delle Classi
Diagrammi delle ClassiDiagrammi delle Classi
Diagrammi delle Classi
 
Errori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiErrori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei Requisiti
 
Presto updates to 0.178
Presto updates to 0.178Presto updates to 0.178
Presto updates to 0.178
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVM
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics Programming
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
 
Scala - the good, the bad and the very ugly
Scala - the good, the bad and the very uglyScala - the good, the bad and the very ugly
Scala - the good, the bad and the very ugly
 
SOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignSOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented Design
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java Programmers
 

Ähnlich wie Java - Concurrent programming - Thread's basics

Multithreading
MultithreadingMultithreading
Multithreadingbackdoor
 
Multi-threaded Programming in JAVA
Multi-threaded Programming in JAVAMulti-threaded Programming in JAVA
Multi-threaded Programming in JAVAVikram Kalyani
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javaRaghu nath
 
9.multi-threading latest(MB).ppt .
9.multi-threading latest(MB).ppt            .9.multi-threading latest(MB).ppt            .
9.multi-threading latest(MB).ppt .happycocoman
 
Java Multithreading and Concurrency
Java Multithreading and ConcurrencyJava Multithreading and Concurrency
Java Multithreading and ConcurrencyRajesh Ananda Kumar
 
Java Threads And Concurrency Presentation. 2024
Java Threads And Concurrency Presentation. 2024Java Threads And Concurrency Presentation. 2024
Java Threads And Concurrency Presentation. 2024kashyapneha2809
 
Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024nehakumari0xf
 
Multithreading programming in java
Multithreading programming in javaMultithreading programming in java
Multithreading programming in javaElizabeth alexander
 
Java Threads: Lightweight Processes
Java Threads: Lightweight ProcessesJava Threads: Lightweight Processes
Java Threads: Lightweight ProcessesIsuru Perera
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javajunnubabu
 
JAVA THREADS.pdf
JAVA THREADS.pdfJAVA THREADS.pdf
JAVA THREADS.pdfMohit Kumar
 
Multithreading
MultithreadingMultithreading
Multithreadingsagsharma
 

Ähnlich wie Java - Concurrent programming - Thread's basics (20)

Multithreading
MultithreadingMultithreading
Multithreading
 
Md09 multithreading
Md09 multithreadingMd09 multithreading
Md09 multithreading
 
Slide 7 Thread-1.pptx
Slide 7 Thread-1.pptxSlide 7 Thread-1.pptx
Slide 7 Thread-1.pptx
 
Multi-threaded Programming in JAVA
Multi-threaded Programming in JAVAMulti-threaded Programming in JAVA
Multi-threaded Programming in JAVA
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
9.multi-threading latest(MB).ppt .
9.multi-threading latest(MB).ppt            .9.multi-threading latest(MB).ppt            .
9.multi-threading latest(MB).ppt .
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Java Threads
Java ThreadsJava Threads
Java Threads
 
Java Multithreading and Concurrency
Java Multithreading and ConcurrencyJava Multithreading and Concurrency
Java Multithreading and Concurrency
 
Threadnotes
ThreadnotesThreadnotes
Threadnotes
 
Thread model in java
Thread model in javaThread model in java
Thread model in java
 
Java unit 12
Java unit 12Java unit 12
Java unit 12
 
Java Threads And Concurrency Presentation. 2024
Java Threads And Concurrency Presentation. 2024Java Threads And Concurrency Presentation. 2024
Java Threads And Concurrency Presentation. 2024
 
Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024
 
Multithreading programming in java
Multithreading programming in javaMultithreading programming in java
Multithreading programming in java
 
advanced java ppt
advanced java pptadvanced java ppt
advanced java ppt
 
Java Threads: Lightweight Processes
Java Threads: Lightweight ProcessesJava Threads: Lightweight Processes
Java Threads: Lightweight Processes
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
JAVA THREADS.pdf
JAVA THREADS.pdfJAVA THREADS.pdf
JAVA THREADS.pdf
 
Multithreading
MultithreadingMultithreading
Multithreading
 

Mehr von Riccardo Cardin

Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern ComportamentaliRiccardo Cardin
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern CreazionaliRiccardo Cardin
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular jsRiccardo Cardin
 
Reactive programming principles
Reactive programming principlesReactive programming principles
Reactive programming principlesRiccardo Cardin
 

Mehr von Riccardo Cardin (7)

Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern Comportamentali
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern Creazionali
 
Diagrammi di Attività
Diagrammi di AttivitàDiagrammi di Attività
Diagrammi di Attività
 
Diagrammi Use Case
Diagrammi Use CaseDiagrammi Use Case
Diagrammi Use Case
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular js
 
Reactive programming principles
Reactive programming principlesReactive programming principles
Reactive programming principles
 

Kürzlich hochgeladen

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 

Kürzlich hochgeladen (20)

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

Java - Concurrent programming - Thread's basics

  • 1. CONCURRENT PROGRAMMING THREAD’S BASICS PROGRAMMAZIONE CONCORRENTE E DISTR. Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2015 – 2016 rcardin@math.unipd.it
  • 2. Programmazione concorrente e distribuita SUMMARY  Introduction  Thread basics  Thread properties  Thread states  Thread interruption  Sequence diagrams 2Riccardo Cardin
  • 3. Programmazione concorrente e distribuita INTRODUCTION  Multitasking  The ability to have more than a program working at what seems like the same time  The unity of this type of programming is a process  A process has its own variables  Communication between process is accomplished using messages sent over a common channel (i.e. a socket)  Very hard to accomplish and no so performant  Types  Cooperative: CPU control is left to the processes  Time-sliced: the OS (scheduler) assigns a time slice to each process 3Riccardo Cardin
  • 4. Programmazione concorrente e distribuita INTRODUCTION  Multithread  A programming model that allows multiple threads to exists within the same context of a single process  Every process will appear to do multiple tasks  Threads share the same data and variables  Every process as a main thread  This thread can create other threads, called secondary  Every thread as a priority order (1 .. 10)  Types  Cooperative  Time-sliced: thread scheduling is left to the main thread, that uses OS utilities 4Riccardo Cardin
  • 5. Programmazione concorrente e distribuita INTRODUCTION 5Riccardo Cardin
  • 6. Programmazione concorrente e distribuita INTRODUCTION 6Riccardo Cardin Process Memory Thread 1 Task Task Thread 2 Task Thread 3 Task Threads share the same memory chunks Every thread could be reused to execute different tasksThreads are lighter than processes, even so their creation is still time- consuming Each process can execute many threads Threads are a mechanism provided by the OS
  • 7. Programmazione concorrente e distribuita DEFINITION  Multithread programming  A programming model that allows multiple threads to exists within the same context of a single process  Responsiveness  Faster execution  Lower resource consumption  Parallelization  Java has built-in support for concurrent programming 7Riccardo Cardin A thread is the smallest sequence of programmed instructions that can be managed independently. Multiple thread can exist within the same process, executing concurrently and share resources such as memory. - Wikipedia
  • 8. Programmazione concorrente e distribuita THREAD BASICS  Threads in Java are the primitives that actually execute tasks  Runnable interface describes a task you want to run, usually concurrently with others  The code of the run method will be executed in a thread  Tasks are short lived, so you don’t waste the time to start a thread 8Riccardo Cardin public interface Runnable { void run(); } Runnable task = () -> { int i = 0; while (i < 1000) i++; } new Thread(task).start(); // A thread running a task
  • 9. Programmazione concorrente e distribuita THREAD BASICS  You should decouple the task that is to be run in parallel from the mechanism of running it  You can also define a subclass of Thread, but this approach is no longer recommended  If you have many task is to expensive create a single thread for each one  Do not call the run method on Thread or Runnable instances  The task is merely executed in the same thread 9Riccardo Cardin class MyThread extends Thread { public void run() { // task code, don’t do this!!! } }
  • 10. Programmazione concorrente e distribuita THREAD BASICS 10Riccardo Cardin
  • 11. Programmazione concorrente e distribuita THREAD BASICS  The main method executes in the main thread  From the main thread they can be executed other thread, called secondary  They execute in pararrel wrt the main thread  Threads can be of two type  User threads  JVM stops when there are no more user thread executing  Deamon threads  A deamon stops when its user thread stops 11Riccardo Cardin public class Example { public static void main(String[] args) { // This code runs inside the main thread } }
  • 12. Programmazione concorrente e distribuita THREAD PROPERTIES  Thread priorities  Use setPriority method to give a thread a priority  MIN_PRIORITY = 1 and MAX_PRIORITY = 10  Don’t use priorities, they are too highly system-dependent  Deamon threads  Use setDeamon method  Its only role is to serve other threads  When only deamon threads remain, the JVM exits  Handlers for uncaught exceptions  The run method cannot throw any checked ex.  Install an UncaughtExceptionHandler to manage ex. 12Riccardo Cardin
  • 13. Programmazione concorrente e distribuita THREAD STATES  6 thread states  New  Runnable  Blocked  Waiting  Time waiting  Terminated  Use getState method  Thread.State 13 No resources associated Runnable ≠ Running
  • 14. Programmazione concorrente e distribuita THREAD STATES  New threads  Just created with the new operator. Not yet running  Runnable threads  Once the start method is invoked.  Resource creation, scheduling  run method is invoked  It may or not actually be running  DO NOT CALL RUN METHOD DIRECTLY! 14Riccardo Cardin public static void main(String[] args) { // Not concurrent, but sequential new MyThread().run(); for (int i = 0; i < 200; i++) System.out.println("Cycle - " + i); }
  • 15. Programmazione concorrente e distribuita THREAD STATES  Blocked and Waiting threads  Temporarily inactive  A thread becomes blocked when it tries to acquire an intrinsic object lock  When a thread waits for another thread to notify of a condition, it enters the waiting state  The calling of a timeout parameters causes the thread to enter the timed waiting (Thread.sleep)  A thread waits for another thread to finish, calling the join method on it  Terminated threads  It is not possible to reborn a thread in this state 15Riccardo Cardin
  • 16. Programmazione concorrente e distribuita THREADS INTERRUPTION  A thread terminates when it’s run method:  Returns by executing a return statement  After executing the last statement in method body  If an unhandled exception occurs  It is possible to send an interruption request  Use the interrupt method  Thread states becomes interrupted, but thread is not interrupted by the JVM  Thread should check whether it has been interrupted 16Riccardo Cardin while (!Thread.currentThread().isInterrupted() && more work to do) { // do more work }
  • 17. Programmazione concorrente e distribuita THREADS INTERRUPTION  Waiting for another thread to finish  Use join() or join(long millis)  An instance of the joining thread must be available  Passing a time interval to the method has the effect to limit the waiting period to millis milliseconds 17Riccardo Cardin Thread thread = new Thread(() -> { // Do some heavy work }); thread.start(); try { // Waiting for at max 1 second the termination of thread thread.join(1000L); } catch(InterruptedException e) { // thread was interrupted during sleep } finally { // cleanup, if required }
  • 18. Programmazione concorrente e distribuita THREADS INTERRUPTION  Implementing collaborative preemption  Thread.yield() notifies the system that the current thread is willing to "give up the CPU" for a while.  Thread scheduler will select a different thread to run  If no other thread is present, the statement has no effect  When to use yield()? Practically NEVER  Use Thread.sleep() (requires some self-computation)  Use synchronization mechanisms if waiting for a process or a resource 18Riccardo Cardin while ( /* more work to do */ ) { // do more work Thread.yield(); }
  • 19. Programmazione concorrente e distribuita THREADS INTERRUPTION  Interrupting a thread simply grabs its attention  Use Thread.sleep(long time) to suspend temporarily the thread  If the interrupted thread was sleeping or waiting for something, an InterruptedException is thrown  ...and the thread status is cleared! 19Riccardo Cardin try { while ( /* more work to do */ ) { // do more work Thread.sleep(delay); } } catch(InterruptedException e) { // thread was interrupted during sleep } finally { // cleanup, if required }
  • 20. Programmazione concorrente e distribuita THREADS INTERRUPTION 20Riccardo Cardin
  • 21. Programmazione concorrente e distribuita SEQUENCE DIAGRAMS  How can we reason about thread visually?  UML gives use sequence diagrams 21Riccardo Cardin Partecipant Timepassing Life line
  • 22. Programmazione concorrente e distribuita SEQUENCE DIAGRAMS 22Riccardo Cardin A sequence diagram describes the cooperation between a group of objects that have to interact with each other to fulfill an objective Definition Message Find message Internal call Return Object creation
  • 23. Programmazione concorrente e distribuita EXAMPLES 23Riccardo Cardin https://github.com/rcardin/pcd-snippets
  • 24. Programmazione concorrente e distribuita REFERENCES  Chap. 14 «Multithreading», Core Java Volume I - Fundamentals, Cay Horstmann, Gary Cornell, 2012, Prentice Hall  Thread.yield http://www.javamex.com/tutorials/threads/yield.shtml  What are the main uses of yield(), and how does it differ from join() and interrupt()? http://stackoverflow.com/questions/6979796/what-are-the-main- uses-of-yield-and-how-does-it-differ-from-join-and-interr  Chap. 10 «Concurrent Programming», Core Java for the Impatient, Cay Horstmann, 2015, Addison-Wesley 24Riccardo Cardin