Multithreaded Programming Using Java Threads: Praveenraj R (Mark Education Academy)
Multithreaded Programming Using Java Threads: Praveenraj R (Mark Education Academy)
PraveenRaj R
(Mark Education Academy)
2 Agenda
Introduction
Thread Applications
Defining Threads
Java Threads and States
Priorities
Accessing Shared Resources
Synchronisation
Assignment 1:
Multi-Threaded Math Server
Advanced Issues:
Concurrency Models: master/worker, pipeline, peer processing
Multithreading Vs multiprocessing
3 A single threaded program
class ABC
{
….
public void main(..) begin
{
… body
.. end
}
}
4 A Multithreaded Program
Main Thread
start
start start
Server
Threads
Internet
Client 2 Process
Web/Internet Applications:
Serving Many Users Simultaneously
7
PC client
Internet
Server
Local Area Network
PD
A
8 Modern Applications need Threads (ex1):
Editing and Printing documents in background.
Printing Thread
Editing Thread
9 Multithreaded/Parallel File Copy
reader()
{ writer()
- - - - - - - - - buff[0] {
- - - - - - - - - - -
lock(buff[i]); lock(buff[i]);
read(src,buff[i]); buff[1]
write(src,buff[i]);
unlock(buff[i]); unlock(buff[i]);
- - - - - - - - - - - - - - - - - - -
- }
}
Fine grain
a ( 0 ) =.. a ( 1 )=.. a ( 2 )=.. (data level)
Compilers b ( 0 ) =.. b ( 1 )=.. b ( 2 )=..
Loop (Compiler)
MyThread MyClass
[a] [b]
1st method: Extending Thread
14
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();
15 An example
class ThreadEx1 {
public static void main(String [] args ) {
MyThread t = new MyThread();
t.start();
}
}
2nd method: Threads by implementing
16 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();
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();
}
}
Life Cycle of Thread
18
new
start()
I/O completed
ready
Time expired/ resume()
notify() interrupted
sleeping blocked
waiting
dispatch
sleep()
wait() suspend()
running Block on I/O
completion
stop() dead
19
A Program with Three Java Threads
{
{
for(int i=1;i<=5;i++)
{
}
}
}
{
{
for(int j=1;j<=5;j++)
{
}
}
}
21
{
{
for(int k=1;k<=5;k++)
{
}
}
}
class ThreadTest
{
{
new A().start();
new B().start();
new C().start();
}
}
22 Run 1
System.out.println("Thread A started");
for(int i=1;i<=4;i++)
System.out.println("Thread B started");
for(int j=1;j<=4;j++)
}
28 Thread Priority Example
System.out.println("Thread C started");
for(int k=1;k<=4;k++)
class ThreadPriority
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);
threadA.start();
threadB.start();
threadC.start();
}
29 Accessing Shared Resources
PC client
Internet Bank
Server
Local Area Network
Bank
Database PD
A
31 Shared Resources
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()
}
Shared account object between 3
33 threads
class MyThread implements Runnable {
Account account;
public MyThread (Account s) { account = s;}
public void run() { account.deposit(); }
} // end class MyThread
Client Process
User Mode
Kernel Mode
Message Passing
Facility
36 Assignment 1: Multithreaded MathServer –
Demonstrates the use of Sockets and Threads
A Client
Program in “C” A Client
What is sin(10)? Program in “C++”
What is sin(10)?
37 A Multithreaded Program
MathThreads
MathThreads
Thread Programming models
38 Thread concurrency/operation models
Program Resources
Workers
taskX
Files
Master Databases
taskY
main ( )
Input (Stream)
Disks
taskZ
Special
Devices
40
Program Resources
Workers
Input taskX
Files
Databases
taskY
Disks
taskZ
Special
Devices
A thread pipeline
41 A thread pipeline
Input (Stream)
42
43 Multithreading - Multiprocessors
Process Parallelism
CPU
P1
P2 CPU
P3 CPU
time
Concurrency Vs Parallelism
Process Concurrency
P1
P2 CPU
P3
time
Application
Application Application
Application
CPU
CPU
CPU CPU CPU CPU
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/essential/concurrency/