1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Waiter implements Runnable {
private Message msg;
public Waiter(Message m) {
this.msg = m;
}
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();
1
2
3
4
5
6
7
8
9
10
public class Notifier implements Runnable {
private Message msg;
public Notifier(Message msg) {
this.msg = msg;
}
public void run() {
1
2
3
4
5
6
7
8
9
10
public class TestMain {
public static void main(String[] args) {
Message msg = new Message("process it");
Waiter waiter1 = new Waiter(msg);
new Thread(waiter1, "Waiter-1").start();
Waiter waiter2 = new Waiter(msg);
new Thread(waiter2, "Waiter-2").start();
1
2
3
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.