Inter communication between thread is one of the most
important topic now a days asked in interview questions.i.e wait() , notify() ,
notifyAll()
If you dont know the basics of Multithreading see my previous posts
Multithreading in java
Basics of Volatile Keywords
If you dont know the basics of Multithreading see my previous posts
Multithreading in java
Basics of Volatile Keywords
Wait()
This method is the part of Object Class which is used to
release the lock over the shared resource. Wait has 2 variant , one is where
the thread will wait for the resource for infinite time for notify or notifyAll
to be call. Other is it wait for specific time which user assigned before wake
up.
Notify()
Notify method is also the part of Object class , It basic responsibility
is to notify any one the thread who are waiting for the resource to get lock based
on the priority or system implementation
OR
Wakes up a single
thread that is waiting on this object's monitor. If any threads are waiting on
this object, one of them is chosen to be awakened. The choice is arbitrary and
occurs at the discretion of the implementation. A thread waits on an object's monitor
by calling one of the
wait
methods.
NotifyAll()
Wakes up all
threads that are waiting on this object's monitor. A thread waits on an
object's monitor by calling one of the
wait
methods.
These methods can
be used for Producer – Consumer Problem on low level synchronization.
Interview Question : print continuous number using 2 thread
Interview Question : print continuous number using 2 thread
Now we will see how
to use the Wait , Notify and NotifyAll In java
Explanation
:
- We have 2 class one is Processor2 and Second is WaitNotifyDemo (main class)
- In Processor2 class we have 2 methods one is producer() and other is consumer() , In Producer we have first sysout command and then wait() method which will release the lock at wait() line , whereas in consumer() method we are sleeping the thread for 1 sec so that producer will take the lock .
- Now in consumer method we have created a scanner object where we are looking for the keystroke after the key stoke we are notify() to other threads to get the lock.
- After this point the thread one which is waiting for the lock in producer() method will get the lock and then print the last sysout.
NOTE
This program is just to show you how wait and notify works whereas we always
use wait in while loop.
We will
see the industry level code for wait notify in next post of Producer ConsumerProblem.
I hope
this will help you to understand the wait and notify working. If you have any
issue please leave us a comment we will be happy to help.
Thanks
for reading
Noeik
0 comments:
Post a Comment