0% found this document useful (0 votes)
2 views18 pages

Java Thread Creation and Management

Uploaded by

Zahir Jafer
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views18 pages

Java Thread Creation and Management

Uploaded by

Zahir Jafer
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Today’s Agenda

 Quick Review

 Finish Java Threads

 The CS Problem

Advanced Topics in Software Engineering 1


Quick Review
 What are the two approaches to creating Java
threads?

Advanced Topics in Software Engineering 2


Java Threads
 Thread Creation

 Thread Synchronization

 Thread States And Scheduling

 Short Demo

Advanced Topics in Software Engineering 3


Thread Creation

There are two ways to create a thread in Java:


 Extend the Thread class

 Implement the Runnable interface

Advanced Topics in Software Engineering 4


The Thread class
class A extends Thread {
public A (String name) { super (name); }
public void run () {
[Link](“My name is ” + getName());
}
}
class B {
public static void main (String [] args) {
A a = new A (“mud”);
[Link] ();
}
}

Advanced Topics in Software Engineering 5


The Runnable interface
class A extends ... implements Runnable {
public void run () {
[Link](“My name is ” + getName () );
}
}
class B {
public static void main (String [] args) {
A a = new A ();
Thread t = new Thread (a, “mud, too”);
[Link] ();
}
}

Advanced Topics in Software Engineering 6


Java Threads
 Thread Creation

 Thread Synchronization

 Thread States And Scheduling

 Short Demo

Advanced Topics in Software Engineering 7


Lock

Each Java object is implicitly associated with a


lock.
To invoke a synchronized method of an object, a
thread must obtain the lock associated with this
object.
The lock is not released until the execution of the
method completes.
The locking mechanism ensures that at any
given time, at most one thread can execute any
synchronized method of an object.
Important: Lock is per object (NOT per method)!

Advanced Topics in Software Engineering 8


wait, notify and notifyAll

The execution of wait on an object causes the


current thread to wait until some other thread to
call notify or notifyAll.
A thread must own the object lock before it
invokes wait on an object. The execution of wait
will also release the lock.
When a waiting thread is notified, it has to
compete and reacquire the object lock before it
continues execution.
What’s the difference between notify and
notifyAll?

Advanced Topics in Software Engineering 9


join

A thread t1 can wait until another thread t2 to


terminate.

t1 t2

[Link] ()

end

Advanced Topics in Software Engineering 10


interrupt

interrupt allows one thread to send a signal to


another thread.
It will set the thread’s interrupt status flag, and
will throw a ThreadInterrupted exception if
necessary .
The receiver thread can check the status flag or
catch the exception, and then take appropriate
actions.

Advanced Topics in Software Engineering 11


Other Thread methods

Method sleep puts the running thread into sleep,


releasing the CPU.
Method suspend suspends the execution of a
thread, which can be resumed later by another
thread using method resume.
Method stop ends the execution of a thread.
Note that suspend, resume, and stop has been
deprecated in Java 2. (For more info, refer to
[Link]

Advanced Topics in Software Engineering 12


Daemon Thread

A daemon thread is used to perform some


services (e.g. cleanup) for other threads.
Any thread can be marked as a daemon thread
using setDaemon (true).
A program terminates when all its non-daemon
threads terminate, meaning that daemon
threads die when all non-daemon threads die.

Advanced Topics in Software Engineering 13


Java Threads
 Thread Creation

 Thread Synchronization

 Thread States And Scheduling

 Short Demo

Advanced Topics in Software Engineering 14


State Transition Diagram
CS, yield

start scheduled
new runnable running
pen
sus
d

d
e

en
um
IO completes,

sp
IO, sleep
sleep expires,
res

su
wait, join
notify, notifyAll,
p

join completes
sto

suspended blocked
e
sum
re
op IO

d
st co

en
m

sp
pl
et

su
es

dead stop suspend


blocked

stop

stop, run ends

Advanced Topics in Software Engineering 15


Scheduling

In general, there are two types of scheduling:


non-preemptive scheduling, and preemptive
scheduling.
In non-preemptive scheduling, a thread runs
until it terminates, stops, blocks, suspends, or
yields.
In preemptive scheduling, even if the current
thread is still running, a context switch will
occur when its time slice is used up.

Advanced Topics in Software Engineering 16


Priorities

Each thread has a priority that also affects their


scheduling to run.
If a thread of a higher priority enters the
runnable set, the currently running thread will be
preempted by the new thread.

Advanced Topics in Software Engineering 17


Java Threads
 Thread Creation

 Thread Synchronization

 Thread States And Scheduling

 Short Demo

Advanced Topics in Software Engineering 18

You might also like