battle programming a forum for elite programmers with extreme will power to sharpen theire skills
 
HomeCalendarFAQSearchMemberlistUsergroupsRegisterLog in
Share
 

 java D notifier

Go down 
AuthorMessage
Moti Barski

Moti Barski

Posts : 330
Join date : 2011-08-02

java D notifier Empty
PostSubject: java D notifier   java D notifier EmptyWed Mar 20, 2019 6:11 am

this alows one thread to jumpstart a thread that was put to sleep(wait)

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

jocolor

_________________
MB over and out emp it up
Back to top Go down
View user profile
 
java D notifier
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
battle programmers alliance :: battle programming alliance :: battle programming-
Jump to: