SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Multithreaded Programming
using Java Threads

Prof. Rajkumar Buyya

Cloud Computing and Distributed Systems (CLOUDS) Laboratory

Dept. of Computer Science and Software Engineering
University of Melbourne, Australia
http://www.cloudbus.org/~raj or http://www.buyya.com

1
Agenda





Introduction
Thread Applications
Defining Threads
Java Threads and States




Accessing Shared Resources




Synchronisation

Assignment 1:




Priorities

Multi-Threaded Math Server

Advanced Issues:



Concurrency Models: master/worker, pipeline, peer processing
Multithreading Vs multiprocessing

2
A single threaded program
class ABC
{
….
public void main(..)
{
…
..
}

begin

body
end

}
3
A Multithreaded Program
Main Thread

start

Thread A

start

start

Thread B

Thread C

Threads may switch or exchange data/results
4
Single and Multithreaded
Processes
threads are light-weight processes within a process
Single-threaded Process

Multiplethreaded
Threads of Process
Execution

Multiple instruction stream
Single instruction stream Common
Address Space
5
Multithreaded Server: For Serving
Multiple Clients Concurrently

Server Process

Client 1 Process

Server
Threads


Internet

Client 2 Process

6
Web/Internet Applications:
Serving Many Users Simultaneously
PC client

Internet
Server
Local Area Network

PDA
7
Modern Applications need Threads (ex1):
Editing and Printing documents in background.
Printing Thread
Printing Thread

Editing Thread
Editing Thread

8
Multithreaded/Parallel File Copy
reader()
reader()
{{
-- -- -- -- -- -- -- -- --lock(buff[i]);
lock(buff[i]);
read(src,buff[i]);
read(src,buff[i]);
unlock(buff[i]);
unlock(buff[i]);
-- -- -- -- -- -- -- -- --}}

buff[0]
buff[0]
buff[1]
buff[1]

writer()
writer()
{{
-- -- -- -- -- -- -- -- -- -lock(buff[i]);
lock(buff[i]);
write(src,buff[i]);
write(src,buff[i]);
unlock(buff[i]);
unlock(buff[i]);
-- -- -- -- -- -- -- -- -- -}}

Cooperative Parallel Synchronized
Cooperative Parallel Synchronized
Threads
Threads

9
Levels of Parallelism
Sockets/
PVM/MPI

Threads

Compilers
CPU

Task i-l
Task i-l

func1 ( () )
func1
{{
....
....
....
....
}}

aa( (00) )=..
=..
bb( (00) )=..
=..

+
+

Task ii
Task

func2 ( () )
func2
{{
....
....
....
....
}}

aa( (11)=..
)=..
bb( (11)=..
)=..

x
x

Task i+1
Task i+1

func3 ( () )
func3
{{
....
....
....
....
}}

aa( (22)=..
)=..
bb( (22)=..
)=..

Load
Load

Code-Granularity
Code-Granularity
Code Item
Code Item
Large grain
Large grain
(task level)
(task level)
Program
Program
Medium grain
Medium grain
(control level)
(control level)
Function (thread)
Function (thread)
Fine grain
Fine grain
(data level)
(data level)
Loop (Compiler)
Loop (Compiler)
Very fine grain
Very fine grain
(multiple issue)
(multiple issue)
With hardware
With hardware

10
What are Threads?








A piece of code that run in concurrent with
other threads.
Each thread is a statically ordered sequence of
instructions.
Threads are being extensively used express
concurrency on both single and
multiprocessors machines.
Programming a task having multiple threads of
control – Multithreading or Multithreaded
Programming.
11
Java Threads






Java has built in thread support for
Multithreading
Synchronization
Thread Scheduling
Inter-Thread Communication:







currentThread
yield
sleep
resume

start
run
stop

setPriority
getPriority
suspend

Java Garbage Collector is a low-priority thread.
12
Threading Mechanisms...



Create a class that extends the Thread class
Create a class that implements the Runnable
interface
Thread

MyThread

(objects are threads)
[a]

Runnable

Thread

MyClass

(objects with run() body)
[b]
13
1st method: Extending Thread
class


Create a class by extending Thread class and override
run() method:
class MyThread extends Thread
{
public void run()
{
// thread body of execution
}
}







Create a thread:
MyThread thr1 = new MyThread();
Start Execution of threads:
thr1.start();
Create and Execute:
new MyThread().start();

14
An example
class MyThread extends Thread {
public void run() {
System.out.println(" this thread is running ... ");
}
}
class ThreadEx1 {
public static void main(String [] args ) {
MyThread t = new MyThread();
t.start();
}
}

15
2nd method: Threads by implementing
Runnable interface


Create a class that implements the interface Runnable and
override run() method:

class MyThread implements Runnable
{
.....
public void run()
{
// thread body of execution
}
}

Creating Object:
MyThread myObject = new MyThread();

Creating Thread Object:
Thread thr1 = new Thread( myObject );

Start Execution:
thr1.start();

16
An example
class MyThread implements Runnable {
public void run() {
System.out.println(" this thread is running ... ");
}
}
class ThreadEx2 {
public static void main(String [] args ) {
Thread t = new Thread(new MyThread());
t.start();
}
}

17
Life Cycle of Thread
new
start()

I/O completed

ready
notify()

waiting
wait()

resume()

Time expired/
interrupted

sleeping

blocked

dispatch

sleep()

running

completion

stop()

suspend()
Block on I/O

dead

18
A Program with Three Java Threads


Write a program that creates 3 threads

19
Three threads example
























class A extends Thread
{
public void run()
{
for(int i=1;i<=5;i++)
{
System.out.println("t From ThreadA: i= "+i);
}
System.out.println("Exit from A");
}
}
class B extends Thread
{
public void run()
{
for(int j=1;j<=5;j++)
{
System.out.println("t From ThreadB: j= "+j);
}
System.out.println("Exit from B");
}
}

20









class C extends Thread
{
public void run()
{
for(int k=1;k<=5;k++)
{
System.out.println("t From ThreadC: k= "+k);
}















}

}

System.out.println("Exit from C");

class ThreadTest
{
public static void main(String args[])
{
new A().start();
new B().start();
new C().start();
}
}

21
Run 1
[raj@mundroo] threads [1:76] java ThreadTest
From ThreadA: i= 1
From ThreadA: i= 2
From ThreadA: i= 3
From ThreadA: i= 4
From ThreadA: i= 5
Exit from A
From ThreadC: k= 1
From ThreadC: k= 2
From ThreadC: k= 3
From ThreadC: k= 4
From ThreadC: k= 5
Exit from C
From ThreadB: j= 1
From ThreadB: j= 2
From ThreadB: j= 3
From ThreadB: j= 4
From ThreadB: j= 5
Exit from B


22
Run2
[raj@mundroo] threads [1:77] java ThreadTest
From ThreadA: i= 1
From ThreadA: i= 2
From ThreadA: i= 3
From ThreadA: i= 4
From ThreadA: i= 5
From ThreadC: k= 1
From ThreadC: k= 2
From ThreadC: k= 3
From ThreadC: k= 4
From ThreadC: k= 5
Exit from C
From ThreadB: j= 1
From ThreadB: j= 2
From ThreadB: j= 3
From ThreadB: j= 4
From ThreadB: j= 5
Exit from B
Exit from A


23
Process Parallelism





int add (int a, int b, int & result)
// function stuff
int sub(int a, int b, int & result)
// function stuff
Processor

IS1

pthread t1, t2;
pthread t1, t2;
pthread-create(&t1, add, a,b, & r1);
pthread-create(&t1, add, a,b, & r1);
pthread-create(&t2, sub, c,d, & r2);
pthread-create(&t2, sub, c,d, & r2);
pthread-par (2, t1, t2);
pthread-par (2, t1, t2);

add
add
Processor

IS2

sub
sub

Data
a
a
b
b
r1
r1
c
c
d
d
r2
r2

MISD and MIMD Processing
24
Data Parallelism




Data

sort( int *array, int count)
//......
//......

pthread-t, thread1, thread2;
pthread-t, thread1, thread2;
““
““
pthread-create(& thread1, sort, array, N/2);
pthread-create(& thread1, sort, array, N/2);
pthread-create(& thread2, sort, array, N/2);
pthread-create(& thread2, sort, array, N/2);
pthread-par(2, thread1, thread2);
pthread-par(2, thread1, thread2);

Processor

Sort
Sort
IS
Processor

Sort
Sort

SIMD Processing

do
“
“
dn/2
dn2/+1
“
“
dn
25
Thread Priority


In Java, each thread is assigned priority, which
affects the order in which it is scheduled for
running. The threads so far had same default
priority (NORM_PRIORITY) and they are
served using FCFS policy.


Java allows users to change priority:


ThreadName.setPriority(intNumber)




MIN_PRIORITY = 1
NORM_PRIORITY=5
MAX_PRIORITY=10

26
Thread Priority Example
class A extends Thread
{

public void run()
{
System.out.println("Thread A started");
for(int i=1;i<=4;i++)
{
System.out.println("t From ThreadA: i= "+i);
}
System.out.println("Exit from A");
}

}
class B extends Thread
{
public void run()
{
System.out.println("Thread B started");
for(int j=1;j<=4;j++)
{
System.out.println("t From ThreadB: j= "+j);
}
System.out.println("Exit from B");
}
}

27
Thread Priority Example
class C extends Thread
{
public void run()
{
System.out.println("Thread C started");
for(int k=1;k<=4;k++)
{
System.out.println("t From ThreadC: k= "+k);
}
System.out.println("Exit from C");
}
}
class ThreadPriority
{
public static void main(String args[])
{
A threadA=new A();
B threadB=new B();
C threadC=new C();
threadC.setPriority(Thread.MAX_PRIORITY);
threadB.setPriority(threadA.getPriority()+1);
threadA.setPriority(Thread.MIN_PRIORITY);
System.out.println("Started Thread A");
threadA.start();
System.out.println("Started Thread B");
threadB.start();
System.out.println("Started Thread C");
threadC.start();
System.out.println("End of main thread");
}
}

28
Accessing Shared Resources


Applications Access to Shared Resources need
to be coordinated.





Printer (two person jobs cannot be printed at the
same time)
Simultaneous operations on your bank account.
Can the following operations be done at the same
time on the same account?




Deposit()
Withdraw()
Enquire()

29
Online Bank: Serving Many
Customers and Operations
PC client

Internet Bank
Server
Local Area Network

Bank
Database

PDA
30
Shared Resources






If one thread tries to read the data and other
thread tries to update the same data, it leads to
inconsistent state.
This can be prevented by synchronising access
to the data.
Use “Synchronized” method:



public synchronized void update()
{




…

}
31
the driver: 3rd Threads sharing
the same object
class InternetBankingSystem {
public static void main(String [] args ) {
Account accountObject = new Account ();
Thread t1 = new Thread(new MyThread(accountObject));
Thread t2 = new Thread(new YourThread(accountObject));
Thread t3 = new Thread(new HerThread(accountObject));

t1.start();
t2.start();
t3.start();
// DO some other operation
} // end main()
}
32
Shared account object
between 3 threads
class MyThread implements Runnable {
Account account;
public MyThread (Account s) { account = s;}
public void run() { account.deposit(); }
} // end class MyThread
class YourThread implements Runnable {
Account account;
public YourThread (Account s) { account = s;}
public void run() { account.withdraw(); }
} // end class YourThread
class HerThread implements Runnable {
Account account;
public HerThread (Account s) { account = s; }
public void run() {account.enquire(); }
} // end class HerThread

account
(shared
object)

33
Monitor (shared object access):
serializes operation on shared object
class Account { // the 'monitor'
int balance;
// if 'synchronized' is removed, the outcome is unpredictable
public synchronized void deposit( ) {
// METHOD BODY : balance += deposit_amount;
}

}

public synchronized void withdraw( ) {
// METHOD BODY: balance -= deposit_amount;
}
public synchronized void enquire( ) {
// METHOD BODY: display balance.
}

34
Multithreaded Server

Multithreaded Server
Client Process

Server Process
Server
Threads

Client Process

User Mode
Kernel Mode
Message Passing
Facility

35
Assignment 1: Multithreaded MathServer –
Demonstrates the use of Sockets and Threads

A Client Program
What is sqrt(10)?

“sqrt 4.0”
“2.0”

Multithreaded
MathServer
(sin, cos, sqrt, etc.)

A Client Program
What is sin(10)?

A Client
Program in “C”
What is sin(10)?

A Client
Program in “C++”
What is sin(10)?
36
A Multithreaded Program
MathThreads

start

MathSin

start

start

MathCos

join

join

MathTan

join

MathThreads
37
Thread Programming models
Thread concurrency/operation models




The master/worker model
The peer model
A thread pipeline

38
The master/worker model
Program

Resources

Workers
taskX
taskX

Files
Databases

Master
Input (Stream)

main ( ( )
main )

taskY
taskY

Disks
taskZ
taskZ

Special
Devices

39
The peer model
Program

Input
Input

Resources

Workers
taskX
taskX

Files
Databases

taskY
taskY

Disks
taskZ
taskZ

Special
Devices

40
A thread
A thread pipeline pipeline
Program

Filter Threads
Stage 11
Stage

Stage 22
Stage

Stage 33
Stage

Input (Stream)

Resources

Files

Files

Files

Databases

Databases

Databases

Disks

Special Devices

Disks

Special Devices

Disks

Special Devices

41
Multithreading and
Multiprocessing Deployment
issues
On Shared and distributed
memory systems

42
Multithreading - Multiprocessors
Process Parallelism
Process Parallelism
CPU

P1
P1
P2
P2

CPU

P3
P3

CPU

time
time

No of execution processes <= the number of CPUs
No of execution processes <= the number of CPUs
43
Multithreading on Uni-processor


Concurrency Vs Parallelism
 Process Concurrency
Process Concurrency
P1
P1
P2
P2

CPU

P3
P3

time
time

Number of Simultaneous execution units > number of
Number of Simultaneous execution units > number of
CPUs
CPUs

44
Multi-Processing (clusters & grids)
and Multi-Threaded Computing
Threaded Libraries, Multi-threaded I/O
Application
Application

Application

Application

CPU
CPU
CPU
Better Response Times in
Multiple Application
Environments

CPU

CPU

CPU

Higher Throughput for
Parallelizeable Applications
45
References




Rajkumar Buyya, Thamarai Selvi,
Xingchen Chu, Mastering OOP with
Java, McGraw Hill (I) Press, New Delhi,
India, 2009.
Sun Java Tutorial – Concurrency:


http://java.sun.com/docs/books/tutorial/essentia

46

Contenu connexe

Tendances

Inheritance in OOPs with java
Inheritance in OOPs with javaInheritance in OOPs with java
Inheritance in OOPs with javaAAKANKSHA JAIN
 
Data Structures - Lecture 9 [Stack & Queue using Linked List]
 Data Structures - Lecture 9 [Stack & Queue using Linked List] Data Structures - Lecture 9 [Stack & Queue using Linked List]
Data Structures - Lecture 9 [Stack & Queue using Linked List]Muhammad Hammad Waseem
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javaRaghu nath
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Javaparag
 
Multithreading
MultithreadingMultithreading
MultithreadingA B Shinde
 
Multi processor scheduling
Multi  processor schedulingMulti  processor scheduling
Multi processor schedulingShashank Kapoor
 
Multidimensional array in C
Multidimensional array in CMultidimensional array in C
Multidimensional array in CSmit Parikh
 
Array of objects.pptx
Array of objects.pptxArray of objects.pptx
Array of objects.pptxRAGAVIC2
 
Data Structure and Algorithms Arrays
Data Structure and Algorithms ArraysData Structure and Algorithms Arrays
Data Structure and Algorithms ArraysManishPrajapati78
 
L14 exception handling
L14 exception handlingL14 exception handling
L14 exception handlingteach4uin
 
Row major and column major in 2 d
Row major and column major in 2 dRow major and column major in 2 d
Row major and column major in 2 dnikhilarora2211
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And MultithreadingShraddha
 

Tendances (20)

Inheritance in OOPs with java
Inheritance in OOPs with javaInheritance in OOPs with java
Inheritance in OOPs with java
 
Data Structures - Lecture 9 [Stack & Queue using Linked List]
 Data Structures - Lecture 9 [Stack & Queue using Linked List] Data Structures - Lecture 9 [Stack & Queue using Linked List]
Data Structures - Lecture 9 [Stack & Queue using Linked List]
 
Array
ArrayArray
Array
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Java applet
Java appletJava applet
Java applet
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Java
 
2D Array
2D Array 2D Array
2D Array
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Arrays in Java
Arrays in JavaArrays in Java
Arrays in Java
 
Multi processor scheduling
Multi  processor schedulingMulti  processor scheduling
Multi processor scheduling
 
Multidimensional array in C
Multidimensional array in CMultidimensional array in C
Multidimensional array in C
 
Array of objects.pptx
Array of objects.pptxArray of objects.pptx
Array of objects.pptx
 
Subnetting
SubnettingSubnetting
Subnetting
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
Data Structure and Algorithms Arrays
Data Structure and Algorithms ArraysData Structure and Algorithms Arrays
Data Structure and Algorithms Arrays
 
Java threads
Java threadsJava threads
Java threads
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
L14 exception handling
L14 exception handlingL14 exception handling
L14 exception handling
 
Row major and column major in 2 d
Row major and column major in 2 dRow major and column major in 2 d
Row major and column major in 2 d
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And Multithreading
 

En vedette

Trading Clearing Systems Test Automation
Trading Clearing Systems Test AutomationTrading Clearing Systems Test Automation
Trading Clearing Systems Test AutomationIosif Itkin
 
TIBCO Latest Interview Questions with Answers by Garuda Trainings
TIBCO Latest Interview Questions with Answers by Garuda TrainingsTIBCO Latest Interview Questions with Answers by Garuda Trainings
TIBCO Latest Interview Questions with Answers by Garuda TrainingsGaruda Trainings
 
Cost of Quality How to Save Money
Cost of Quality How to Save MoneyCost of Quality How to Save Money
Cost of Quality How to Save MoneyIosif Itkin
 
Parallel Trading Systems business proposition
Parallel Trading Systems business propositionParallel Trading Systems business proposition
Parallel Trading Systems business propositionDavide Zari
 
Word Formation in English
Word Formation in EnglishWord Formation in English
Word Formation in Englishteflang
 

En vedette (7)

Automated Trading
Automated TradingAutomated Trading
Automated Trading
 
ESB What it is?
ESB What it is?ESB What it is?
ESB What it is?
 
Trading Clearing Systems Test Automation
Trading Clearing Systems Test AutomationTrading Clearing Systems Test Automation
Trading Clearing Systems Test Automation
 
TIBCO Latest Interview Questions with Answers by Garuda Trainings
TIBCO Latest Interview Questions with Answers by Garuda TrainingsTIBCO Latest Interview Questions with Answers by Garuda Trainings
TIBCO Latest Interview Questions with Answers by Garuda Trainings
 
Cost of Quality How to Save Money
Cost of Quality How to Save MoneyCost of Quality How to Save Money
Cost of Quality How to Save Money
 
Parallel Trading Systems business proposition
Parallel Trading Systems business propositionParallel Trading Systems business proposition
Parallel Trading Systems business proposition
 
Word Formation in English
Word Formation in EnglishWord Formation in English
Word Formation in English
 

Similaire à Threads

Java programming PPT. .pptx
Java programming PPT.                 .pptxJava programming PPT.                 .pptx
Java programming PPT. .pptxcreativegamerz00
 
JAVA THREADS.pdf
JAVA THREADS.pdfJAVA THREADS.pdf
JAVA THREADS.pdfMohit Kumar
 
Class notes(week 9) on multithreading
Class notes(week 9) on multithreadingClass notes(week 9) on multithreading
Class notes(week 9) on multithreadingKuntal Bhowmick
 
Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024nehakumari0xf
 
Java Threads And Concurrency Presentation. 2024
Java Threads And Concurrency Presentation. 2024Java Threads And Concurrency Presentation. 2024
Java Threads And Concurrency Presentation. 2024kashyapneha2809
 
Class notes(week 9) on multithreading
Class notes(week 9) on multithreadingClass notes(week 9) on multithreading
Class notes(week 9) on multithreadingKuntal Bhowmick
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxArulmozhivarman8
 
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 javaMonika Mishra
 
Threads in java, Multitasking and Multithreading
Threads in java, Multitasking and MultithreadingThreads in java, Multitasking and Multithreading
Threads in java, Multitasking and Multithreadingssusere538f7
 

Similaire à Threads (20)

advanced java ppt
advanced java pptadvanced java ppt
advanced java ppt
 
Threads
ThreadsThreads
Threads
 
Java programming PPT. .pptx
Java programming PPT.                 .pptxJava programming PPT.                 .pptx
Java programming PPT. .pptx
 
Multi Threading
Multi ThreadingMulti Threading
Multi Threading
 
Multithreading
MultithreadingMultithreading
Multithreading
 
JAVA THREADS.pdf
JAVA THREADS.pdfJAVA THREADS.pdf
JAVA THREADS.pdf
 
Thread priorities
Thread prioritiesThread priorities
Thread priorities
 
Class notes(week 9) on multithreading
Class notes(week 9) on multithreadingClass notes(week 9) on multithreading
Class notes(week 9) on multithreading
 
Java unit 12
Java unit 12Java unit 12
Java unit 12
 
Threads
ThreadsThreads
Threads
 
unit-3java.pptx
unit-3java.pptxunit-3java.pptx
unit-3java.pptx
 
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
 
Lecture 21
Lecture 21Lecture 21
Lecture 21
 
Class notes(week 9) on multithreading
Class notes(week 9) on multithreadingClass notes(week 9) on multithreading
Class notes(week 9) on multithreading
 
Multithreading.pptx
Multithreading.pptxMultithreading.pptx
Multithreading.pptx
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.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
 
Threads in java, Multitasking and Multithreading
Threads in java, Multitasking and MultithreadingThreads in java, Multitasking and Multithreading
Threads in java, Multitasking and Multithreading
 

Plus de QUAID-E-AWAM UNIVERSITY OF ENGINEERING, SCIENCE & TECHNOLOGY, NAWABSHAH, SINDH, PAKISTAN (11)

Uml for Java Programmers
Uml for Java ProgrammersUml for Java Programmers
Uml for Java Programmers
 
Introduction to Java Programming
Introduction to Java ProgrammingIntroduction to Java Programming
Introduction to Java Programming
 
Java tutorials
Java tutorialsJava tutorials
Java tutorials
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
Java multi thread programming on cmp system
Java multi thread programming on cmp systemJava multi thread programming on cmp system
Java multi thread programming on cmp system
 
Java applets
Java appletsJava applets
Java applets
 
Introduction to-java
Introduction to-javaIntroduction to-java
Introduction to-java
 
Introduction+to+java+2
Introduction+to+java+2Introduction+to+java+2
Introduction+to+java+2
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
 

Dernier

Over the counter (OTC)- Sale, rational use.pptx
Over the counter (OTC)- Sale, rational use.pptxOver the counter (OTC)- Sale, rational use.pptx
Over the counter (OTC)- Sale, rational use.pptxraviapr7
 
ARTICULAR DISC OF TEMPOROMANDIBULAR JOINT
ARTICULAR DISC OF TEMPOROMANDIBULAR JOINTARTICULAR DISC OF TEMPOROMANDIBULAR JOINT
ARTICULAR DISC OF TEMPOROMANDIBULAR JOINTDR. SNEHA NAIR
 
What is the Future of QuickBooks DeskTop?
What is the Future of QuickBooks DeskTop?What is the Future of QuickBooks DeskTop?
What is the Future of QuickBooks DeskTop?TechSoup
 
How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17Celine George
 
EBUS5423 Data Analytics and Reporting Bl
EBUS5423 Data Analytics and Reporting BlEBUS5423 Data Analytics and Reporting Bl
EBUS5423 Data Analytics and Reporting BlDr. Bruce A. Johnson
 
How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17Celine George
 
Work Experience for psp3 portfolio sasha
Work Experience for psp3 portfolio sashaWork Experience for psp3 portfolio sasha
Work Experience for psp3 portfolio sashasashalaycock03
 
Optical Fibre and It's Applications.pptx
Optical Fibre and It's Applications.pptxOptical Fibre and It's Applications.pptx
Optical Fibre and It's Applications.pptxPurva Nikam
 
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptxSandy Millin
 
Ultra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxUltra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxDr. Asif Anas
 
Quality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICEQuality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICESayali Powar
 
10 Topics For MBA Project Report [HR].pdf
10 Topics For MBA Project Report [HR].pdf10 Topics For MBA Project Report [HR].pdf
10 Topics For MBA Project Report [HR].pdfJayanti Pande
 
CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...
CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...
CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...Nguyen Thanh Tu Collection
 
5 charts on South Africa as a source country for international student recrui...
5 charts on South Africa as a source country for international student recrui...5 charts on South Africa as a source country for international student recrui...
5 charts on South Africa as a source country for international student recrui...CaraSkikne1
 
Riddhi Kevadiya. WILLIAM SHAKESPEARE....
Riddhi Kevadiya. WILLIAM SHAKESPEARE....Riddhi Kevadiya. WILLIAM SHAKESPEARE....
Riddhi Kevadiya. WILLIAM SHAKESPEARE....Riddhi Kevadiya
 
How to Send Emails From Odoo 17 Using Code
How to Send Emails From Odoo 17 Using CodeHow to Send Emails From Odoo 17 Using Code
How to Send Emails From Odoo 17 Using CodeCeline George
 
SOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptx
SOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptxSOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptx
SOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptxSyedNadeemGillANi
 
How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17Celine George
 

Dernier (20)

Over the counter (OTC)- Sale, rational use.pptx
Over the counter (OTC)- Sale, rational use.pptxOver the counter (OTC)- Sale, rational use.pptx
Over the counter (OTC)- Sale, rational use.pptx
 
ARTICULAR DISC OF TEMPOROMANDIBULAR JOINT
ARTICULAR DISC OF TEMPOROMANDIBULAR JOINTARTICULAR DISC OF TEMPOROMANDIBULAR JOINT
ARTICULAR DISC OF TEMPOROMANDIBULAR JOINT
 
What is the Future of QuickBooks DeskTop?
What is the Future of QuickBooks DeskTop?What is the Future of QuickBooks DeskTop?
What is the Future of QuickBooks DeskTop?
 
How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17
 
March 2024 Directors Meeting, Division of Student Affairs and Academic Support
March 2024 Directors Meeting, Division of Student Affairs and Academic SupportMarch 2024 Directors Meeting, Division of Student Affairs and Academic Support
March 2024 Directors Meeting, Division of Student Affairs and Academic Support
 
EBUS5423 Data Analytics and Reporting Bl
EBUS5423 Data Analytics and Reporting BlEBUS5423 Data Analytics and Reporting Bl
EBUS5423 Data Analytics and Reporting Bl
 
How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17
 
Work Experience for psp3 portfolio sasha
Work Experience for psp3 portfolio sashaWork Experience for psp3 portfolio sasha
Work Experience for psp3 portfolio sasha
 
Optical Fibre and It's Applications.pptx
Optical Fibre and It's Applications.pptxOptical Fibre and It's Applications.pptx
Optical Fibre and It's Applications.pptx
 
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
 
Ultra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxUltra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptx
 
Quality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICEQuality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICE
 
10 Topics For MBA Project Report [HR].pdf
10 Topics For MBA Project Report [HR].pdf10 Topics For MBA Project Report [HR].pdf
10 Topics For MBA Project Report [HR].pdf
 
Personal Resilience in Project Management 2 - TV Edit 1a.pdf
Personal Resilience in Project Management 2 - TV Edit 1a.pdfPersonal Resilience in Project Management 2 - TV Edit 1a.pdf
Personal Resilience in Project Management 2 - TV Edit 1a.pdf
 
CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...
CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...
CHUYÊN ĐỀ DẠY THÊM TIẾNG ANH LỚP 11 - GLOBAL SUCCESS - NĂM HỌC 2023-2024 - HK...
 
5 charts on South Africa as a source country for international student recrui...
5 charts on South Africa as a source country for international student recrui...5 charts on South Africa as a source country for international student recrui...
5 charts on South Africa as a source country for international student recrui...
 
Riddhi Kevadiya. WILLIAM SHAKESPEARE....
Riddhi Kevadiya. WILLIAM SHAKESPEARE....Riddhi Kevadiya. WILLIAM SHAKESPEARE....
Riddhi Kevadiya. WILLIAM SHAKESPEARE....
 
How to Send Emails From Odoo 17 Using Code
How to Send Emails From Odoo 17 Using CodeHow to Send Emails From Odoo 17 Using Code
How to Send Emails From Odoo 17 Using Code
 
SOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptx
SOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptxSOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptx
SOLIDE WASTE in Cameroon,,,,,,,,,,,,,,,,,,,,,,,,,,,.pptx
 
How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17
 

Threads

  • 1. Multithreaded Programming using Java Threads Prof. Rajkumar Buyya Cloud Computing and Distributed Systems (CLOUDS) Laboratory Dept. of Computer Science and Software Engineering University of Melbourne, Australia http://www.cloudbus.org/~raj or http://www.buyya.com 1
  • 2. Agenda     Introduction Thread Applications Defining Threads Java Threads and States   Accessing Shared Resources   Synchronisation Assignment 1:   Priorities Multi-Threaded Math Server Advanced Issues:   Concurrency Models: master/worker, pipeline, peer processing Multithreading Vs multiprocessing 2
  • 3. A single threaded program class ABC { …. public void main(..) { … .. } begin body end } 3
  • 4. A Multithreaded Program Main Thread start Thread A start start Thread B Thread C Threads may switch or exchange data/results 4
  • 5. Single and Multithreaded Processes threads are light-weight processes within a process Single-threaded Process Multiplethreaded Threads of Process Execution Multiple instruction stream Single instruction stream Common Address Space 5
  • 6. Multithreaded Server: For Serving Multiple Clients Concurrently Server Process Client 1 Process Server Threads  Internet Client 2 Process 6
  • 7. Web/Internet Applications: Serving Many Users Simultaneously PC client Internet Server Local Area Network PDA 7
  • 8. Modern Applications need Threads (ex1): Editing and Printing documents in background. Printing Thread Printing Thread Editing Thread Editing Thread 8
  • 9. Multithreaded/Parallel File Copy reader() reader() {{ -- -- -- -- -- -- -- -- --lock(buff[i]); lock(buff[i]); read(src,buff[i]); read(src,buff[i]); unlock(buff[i]); unlock(buff[i]); -- -- -- -- -- -- -- -- --}} buff[0] buff[0] buff[1] buff[1] writer() writer() {{ -- -- -- -- -- -- -- -- -- -lock(buff[i]); lock(buff[i]); write(src,buff[i]); write(src,buff[i]); unlock(buff[i]); unlock(buff[i]); -- -- -- -- -- -- -- -- -- -}} Cooperative Parallel Synchronized Cooperative Parallel Synchronized Threads Threads 9
  • 10. Levels of Parallelism Sockets/ PVM/MPI Threads Compilers CPU Task i-l Task i-l func1 ( () ) func1 {{ .... .... .... .... }} aa( (00) )=.. =.. bb( (00) )=.. =.. + + Task ii Task func2 ( () ) func2 {{ .... .... .... .... }} aa( (11)=.. )=.. bb( (11)=.. )=.. x x Task i+1 Task i+1 func3 ( () ) func3 {{ .... .... .... .... }} aa( (22)=.. )=.. bb( (22)=.. )=.. Load Load Code-Granularity Code-Granularity Code Item Code Item Large grain Large grain (task level) (task level) Program Program Medium grain Medium grain (control level) (control level) Function (thread) Function (thread) Fine grain Fine grain (data level) (data level) Loop (Compiler) Loop (Compiler) Very fine grain Very fine grain (multiple issue) (multiple issue) With hardware With hardware 10
  • 11. What are Threads?     A piece of code that run in concurrent with other threads. Each thread is a statically ordered sequence of instructions. Threads are being extensively used express concurrency on both single and multiprocessors machines. Programming a task having multiple threads of control – Multithreading or Multithreaded Programming. 11
  • 12. Java Threads     Java has built in thread support for Multithreading Synchronization Thread Scheduling Inter-Thread Communication:      currentThread yield sleep resume start run stop setPriority getPriority suspend Java Garbage Collector is a low-priority thread. 12
  • 13. Threading Mechanisms...   Create a class that extends the Thread class Create a class that implements the Runnable interface Thread MyThread (objects are threads) [a] Runnable Thread MyClass (objects with run() body) [b] 13
  • 14. 1st method: Extending Thread class  Create a class by extending Thread class and override run() method: class MyThread extends Thread { public void run() { // thread body of execution } }    Create a thread: MyThread thr1 = new MyThread(); Start Execution of threads: thr1.start(); Create and Execute: new MyThread().start(); 14
  • 15. An example class MyThread extends Thread { public void run() { System.out.println(" this thread is running ... "); } } class ThreadEx1 { public static void main(String [] args ) { MyThread t = new MyThread(); t.start(); } } 15
  • 16. 2nd method: Threads by implementing Runnable interface  Create a class that implements the interface Runnable and override run() method: class MyThread implements Runnable { ..... public void run() { // thread body of execution } }  Creating Object: MyThread myObject = new MyThread();  Creating Thread Object: Thread thr1 = new Thread( myObject );  Start Execution: thr1.start(); 16
  • 17. An example class MyThread implements Runnable { public void run() { System.out.println(" this thread is running ... "); } } class ThreadEx2 { public static void main(String [] args ) { Thread t = new Thread(new MyThread()); t.start(); } } 17
  • 18. Life Cycle of Thread new start() I/O completed ready notify() waiting wait() resume() Time expired/ interrupted sleeping blocked dispatch sleep() running completion stop() suspend() Block on I/O dead 18
  • 19. A Program with Three Java Threads  Write a program that creates 3 threads 19
  • 20. Three threads example                       class A extends Thread { public void run() { for(int i=1;i<=5;i++) { System.out.println("t From ThreadA: i= "+i); } System.out.println("Exit from A"); } } class B extends Thread { public void run() { for(int j=1;j<=5;j++) { System.out.println("t From ThreadB: j= "+j); } System.out.println("Exit from B"); } } 20
  • 21.         class C extends Thread { public void run() { for(int k=1;k<=5;k++) { System.out.println("t From ThreadC: k= "+k); }             } } System.out.println("Exit from C"); class ThreadTest { public static void main(String args[]) { new A().start(); new B().start(); new C().start(); } } 21
  • 22. Run 1 [raj@mundroo] threads [1:76] java ThreadTest From ThreadA: i= 1 From ThreadA: i= 2 From ThreadA: i= 3 From ThreadA: i= 4 From ThreadA: i= 5 Exit from A From ThreadC: k= 1 From ThreadC: k= 2 From ThreadC: k= 3 From ThreadC: k= 4 From ThreadC: k= 5 Exit from C From ThreadB: j= 1 From ThreadB: j= 2 From ThreadB: j= 3 From ThreadB: j= 4 From ThreadB: j= 5 Exit from B  22
  • 23. Run2 [raj@mundroo] threads [1:77] java ThreadTest From ThreadA: i= 1 From ThreadA: i= 2 From ThreadA: i= 3 From ThreadA: i= 4 From ThreadA: i= 5 From ThreadC: k= 1 From ThreadC: k= 2 From ThreadC: k= 3 From ThreadC: k= 4 From ThreadC: k= 5 Exit from C From ThreadB: j= 1 From ThreadB: j= 2 From ThreadB: j= 3 From ThreadB: j= 4 From ThreadB: j= 5 Exit from B Exit from A  23
  • 24. Process Parallelism     int add (int a, int b, int & result) // function stuff int sub(int a, int b, int & result) // function stuff Processor IS1 pthread t1, t2; pthread t1, t2; pthread-create(&t1, add, a,b, & r1); pthread-create(&t1, add, a,b, & r1); pthread-create(&t2, sub, c,d, & r2); pthread-create(&t2, sub, c,d, & r2); pthread-par (2, t1, t2); pthread-par (2, t1, t2); add add Processor IS2 sub sub Data a a b b r1 r1 c c d d r2 r2 MISD and MIMD Processing 24
  • 25. Data Parallelism    Data sort( int *array, int count) //...... //...... pthread-t, thread1, thread2; pthread-t, thread1, thread2; ““ ““ pthread-create(& thread1, sort, array, N/2); pthread-create(& thread1, sort, array, N/2); pthread-create(& thread2, sort, array, N/2); pthread-create(& thread2, sort, array, N/2); pthread-par(2, thread1, thread2); pthread-par(2, thread1, thread2); Processor Sort Sort IS Processor Sort Sort SIMD Processing do “ “ dn/2 dn2/+1 “ “ dn 25
  • 26. Thread Priority  In Java, each thread is assigned priority, which affects the order in which it is scheduled for running. The threads so far had same default priority (NORM_PRIORITY) and they are served using FCFS policy.  Java allows users to change priority:  ThreadName.setPriority(intNumber)    MIN_PRIORITY = 1 NORM_PRIORITY=5 MAX_PRIORITY=10 26
  • 27. Thread Priority Example class A extends Thread { public void run() { System.out.println("Thread A started"); for(int i=1;i<=4;i++) { System.out.println("t From ThreadA: i= "+i); } System.out.println("Exit from A"); } } class B extends Thread { public void run() { System.out.println("Thread B started"); for(int j=1;j<=4;j++) { System.out.println("t From ThreadB: j= "+j); } System.out.println("Exit from B"); } } 27
  • 28. Thread Priority Example class C extends Thread { public void run() { System.out.println("Thread C started"); for(int k=1;k<=4;k++) { System.out.println("t From ThreadC: k= "+k); } System.out.println("Exit from C"); } } class ThreadPriority { public static void main(String args[]) { A threadA=new A(); B threadB=new B(); C threadC=new C(); threadC.setPriority(Thread.MAX_PRIORITY); threadB.setPriority(threadA.getPriority()+1); threadA.setPriority(Thread.MIN_PRIORITY); System.out.println("Started Thread A"); threadA.start(); System.out.println("Started Thread B"); threadB.start(); System.out.println("Started Thread C"); threadC.start(); System.out.println("End of main thread"); } } 28
  • 29. Accessing Shared Resources  Applications Access to Shared Resources need to be coordinated.    Printer (two person jobs cannot be printed at the same time) Simultaneous operations on your bank account. Can the following operations be done at the same time on the same account?    Deposit() Withdraw() Enquire() 29
  • 30. Online Bank: Serving Many Customers and Operations PC client Internet Bank Server Local Area Network Bank Database PDA 30
  • 31. Shared Resources    If one thread tries to read the data and other thread tries to update the same data, it leads to inconsistent state. This can be prevented by synchronising access to the data. Use “Synchronized” method:   public synchronized void update() {   … } 31
  • 32. the driver: 3rd Threads sharing the same object class InternetBankingSystem { public static void main(String [] args ) { Account accountObject = new Account (); Thread t1 = new Thread(new MyThread(accountObject)); Thread t2 = new Thread(new YourThread(accountObject)); Thread t3 = new Thread(new HerThread(accountObject)); t1.start(); t2.start(); t3.start(); // DO some other operation } // end main() } 32
  • 33. Shared account object between 3 threads class MyThread implements Runnable { Account account; public MyThread (Account s) { account = s;} public void run() { account.deposit(); } } // end class MyThread class YourThread implements Runnable { Account account; public YourThread (Account s) { account = s;} public void run() { account.withdraw(); } } // end class YourThread class HerThread implements Runnable { Account account; public HerThread (Account s) { account = s; } public void run() {account.enquire(); } } // end class HerThread account (shared object) 33
  • 34. Monitor (shared object access): serializes operation on shared object class Account { // the 'monitor' int balance; // if 'synchronized' is removed, the outcome is unpredictable public synchronized void deposit( ) { // METHOD BODY : balance += deposit_amount; } } public synchronized void withdraw( ) { // METHOD BODY: balance -= deposit_amount; } public synchronized void enquire( ) { // METHOD BODY: display balance. } 34
  • 35. Multithreaded Server Multithreaded Server Client Process Server Process Server Threads Client Process User Mode Kernel Mode Message Passing Facility 35
  • 36. Assignment 1: Multithreaded MathServer – Demonstrates the use of Sockets and Threads A Client Program What is sqrt(10)? “sqrt 4.0” “2.0” Multithreaded MathServer (sin, cos, sqrt, etc.) A Client Program What is sin(10)? A Client Program in “C” What is sin(10)? A Client Program in “C++” What is sin(10)? 36
  • 38. Thread Programming models Thread concurrency/operation models    The master/worker model The peer model A thread pipeline 38
  • 39. The master/worker model Program Resources Workers taskX taskX Files Databases Master Input (Stream) main ( ( ) main ) taskY taskY Disks taskZ taskZ Special Devices 39
  • 41. A thread A thread pipeline pipeline Program Filter Threads Stage 11 Stage Stage 22 Stage Stage 33 Stage Input (Stream) Resources Files Files Files Databases Databases Databases Disks Special Devices Disks Special Devices Disks Special Devices 41
  • 42. Multithreading and Multiprocessing Deployment issues On Shared and distributed memory systems 42
  • 43. Multithreading - Multiprocessors Process Parallelism Process Parallelism CPU P1 P1 P2 P2 CPU P3 P3 CPU time time No of execution processes <= the number of CPUs No of execution processes <= the number of CPUs 43
  • 44. Multithreading on Uni-processor  Concurrency Vs Parallelism  Process Concurrency Process Concurrency P1 P1 P2 P2 CPU P3 P3 time time Number of Simultaneous execution units > number of Number of Simultaneous execution units > number of CPUs CPUs 44
  • 45. Multi-Processing (clusters & grids) and Multi-Threaded Computing Threaded Libraries, Multi-threaded I/O Application Application Application Application CPU CPU CPU Better Response Times in Multiple Application Environments CPU CPU CPU Higher Throughput for Parallelizeable Applications 45
  • 46. References   Rajkumar Buyya, Thamarai Selvi, Xingchen Chu, Mastering OOP with Java, McGraw Hill (I) Press, New Delhi, India, 2009. Sun Java Tutorial – Concurrency:  http://java.sun.com/docs/books/tutorial/essentia 46