SlideShare una empresa de Scribd logo
1 de 46
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

Más contenido relacionado

La actualidad más candente

Serialization & De-serialization in Java
Serialization & De-serialization in JavaSerialization & De-serialization in Java
Serialization & De-serialization in JavaInnovationM
 
Abstraction in java.pptx
Abstraction in java.pptxAbstraction in java.pptx
Abstraction in java.pptxAsifMulani17
 
Chorus - Distributed Operating System [ case study ]
Chorus - Distributed Operating System [ case study ]Chorus - Distributed Operating System [ case study ]
Chorus - Distributed Operating System [ case study ]Akhil Nadh PC
 
Deductive databases
Deductive databasesDeductive databases
Deductive databasesJohn Popoola
 
Memory management in oracle
Memory management in oracleMemory management in oracle
Memory management in oracleDavin Abraham
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javajunnubabu
 
directory structure and file system mounting
directory structure and file system mountingdirectory structure and file system mounting
directory structure and file system mountingrajshreemuthiah
 
Chapter 5 Database Transaction Management
Chapter 5 Database Transaction ManagementChapter 5 Database Transaction Management
Chapter 5 Database Transaction ManagementEddyzulham Mahluzydde
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streamsShahjahan Samoon
 
java interface and packages
java interface and packagesjava interface and packages
java interface and packagesVINOTH R
 
Concurrency Control Techniques
Concurrency Control TechniquesConcurrency Control Techniques
Concurrency Control TechniquesRaj vardhan
 
Distributed databases
Distributed databasesDistributed databases
Distributed databasessourabhdave
 

La actualidad más candente (20)

Serialization & De-serialization in Java
Serialization & De-serialization in JavaSerialization & De-serialization in Java
Serialization & De-serialization in Java
 
NUMA
NUMANUMA
NUMA
 
Abstraction in java.pptx
Abstraction in java.pptxAbstraction in java.pptx
Abstraction in java.pptx
 
Chorus - Distributed Operating System [ case study ]
Chorus - Distributed Operating System [ case study ]Chorus - Distributed Operating System [ case study ]
Chorus - Distributed Operating System [ case study ]
 
DBMS Unit - 7 - Transaction Processing
DBMS Unit - 7 - Transaction ProcessingDBMS Unit - 7 - Transaction Processing
DBMS Unit - 7 - Transaction Processing
 
Deductive databases
Deductive databasesDeductive databases
Deductive databases
 
PL/SQL TRIGGERS
PL/SQL TRIGGERSPL/SQL TRIGGERS
PL/SQL TRIGGERS
 
Memory management in oracle
Memory management in oracleMemory management in oracle
Memory management in oracle
 
BANKER'S ALGORITHM
BANKER'S ALGORITHMBANKER'S ALGORITHM
BANKER'S ALGORITHM
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
directory structure and file system mounting
directory structure and file system mountingdirectory structure and file system mounting
directory structure and file system mounting
 
Chapter 5 Database Transaction Management
Chapter 5 Database Transaction ManagementChapter 5 Database Transaction Management
Chapter 5 Database Transaction Management
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streams
 
Manipulating data
Manipulating dataManipulating data
Manipulating data
 
PLSQL Tutorial
PLSQL TutorialPLSQL Tutorial
PLSQL Tutorial
 
java interface and packages
java interface and packagesjava interface and packages
java interface and packages
 
Functional dependency
Functional dependencyFunctional dependency
Functional dependency
 
Concurrency Control Techniques
Concurrency Control TechniquesConcurrency Control Techniques
Concurrency Control Techniques
 
Distributed databases
Distributed databasesDistributed databases
Distributed databases
 
Chapter8 pl sql
Chapter8 pl sqlChapter8 pl sql
Chapter8 pl sql
 

Destacado

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
 

Destacado (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
 

Similar a Threads

Session 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.pptSession 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.pptTabassumMaktum
 
Session 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.pptSession 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.pptTabassumMaktum
 
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. 2024kashyapneha2809
 
Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024Java-Threads And Concurrency Presentation. 2024
Java-Threads And Concurrency Presentation. 2024nehakumari0xf
 
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
 

Similar a Threads (20)

advanced java ppt
advanced java pptadvanced java ppt
advanced java ppt
 
Threads
ThreadsThreads
Threads
 
Session 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.pptSession 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.ppt
 
Session 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.pptSession 7_MULTITHREADING in java example.ppt
Session 7_MULTITHREADING in java example.ppt
 
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
 
Java Threads
Java ThreadsJava Threads
Java Threads
 
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
 

Más 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
 

Último

Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docxPoojaSen20
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...Poonam Aher Patil
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxRamakrishna Reddy Bijjam
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...pradhanghanshyam7136
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Association for Project Management
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxVishalSingh1417
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxcallscotland1987
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 

Último (20)

Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 

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