this alows one thread to jumpstart a thread that was put to sleep(wait)
dragon zord :
mastadon zord :
saber tooth tiger zord :
triseratops zord (main):
output :
waiter waiting to get notified at time:1553027902471
All the threads are started
waiter1 waiting to get notified at time:1553027902471
notifier started
pause...
waiter waiter thread got notified at time:1553027903472
waiter processed: notifier Notifier work done
*********************************************************************
key notes :
notify wakes up one random thread
waiter waiting to get notified at time:1553027902471
All the threads are started
waiter1 waiting to get notified at time:1553027902471
notifier started
waiter waiter thread got notified at time:1553027903472
waiter processed: notifier Notifier work done
notify all wakes all threads waiting on the object, use this on other cases than D above
:joker:
dragon zord :
Code:
public class Message {
private String msg;
public Message(String str) {
this.msg = str;
}
public String getMsg() {
return msg;
}
public void setMsg(String str) {
this.msg = str;
}
}
mastadon zord :
Code:
public class Waiter implements Runnable {
private Message msg;
public Waiter(Message m) {
this.msg = m;
}
@Override
public void run() {
String name = Thread.currentThread().getName();
synchronized (msg) {
try {
System.out.println(name + " waiting to get notified at time:" + System.currentTimeMillis());
msg.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(name + " waiter thread got notified at time:" + System.currentTimeMillis());
// process the message now
System.out.println(name + " processed: " + msg.getMsg());
}
}
}
saber tooth tiger zord :
Code:
public class Notifier implements Runnable {
private Message msg;
public Notifier(Message msg) {
this.msg = msg;
}
@Override
public void run() {
String name = Thread.currentThread().getName();
System.out.println(name + " started");
try {
Thread.sleep(1000);
synchronized (msg) {
msg.setMsg(name + " Notifier work done");
msg.notify();
// msg.notifyAll();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
triseratops zord (main):
Code:
Message msg = new Message("process it");
Waiter waiter = new Waiter(msg);
new Thread(waiter, "waiter").start();
Waiter waiter1 = new Waiter(msg);
new Thread(waiter1, "waiter1").start();
Notifier notifier = new Notifier(msg);
new Thread(notifier, "notifier").start();
System.out.println("All the threads are started");
output :
waiter waiting to get notified at time:1553027902471
All the threads are started
waiter1 waiting to get notified at time:1553027902471
notifier started
pause...
waiter waiter thread got notified at time:1553027903472
waiter processed: notifier Notifier work done
*********************************************************************
key notes :
notify wakes up one random thread
waiter waiting to get notified at time:1553027902471
All the threads are started
waiter1 waiting to get notified at time:1553027902471
notifier started
waiter waiter thread got notified at time:1553027903472
waiter processed: notifier Notifier work done
notify all wakes all threads waiting on the object, use this on other cases than D above
:joker: