在使用synchronized进行线程同步中介绍了依赖对象锁定线程,本篇文章介绍如何依赖对象协调线程。
同synchronized悲观锁一样,线程本身不能等待与唤醒,也是需要对象才能完成等待与唤醒的操作。
本篇主题是Object等待与唤醒。
唤醒等待在此对象上的线程,如果有个线程等待,随机唤醒一个线程
唤醒等待此对象上的所有线程
让当前运行线程等待
让当前线运行程等待timeout毫,直到其他线程调用notify()方法或notifyAll()方法的对象,或一个指定的时间已经过去
让当前运行线程等待timeout++毫秒,直到其他线程调用notify()方法或notifyAll()方法的对象,或一个指定的时间已经过去
package wang.conge.javasedemo.core.thread;
import java.util.Date;
public class WaitAndNotifyDemo{
public static void main(String[] args){
Object mike = new Object();
new Thread(new TalkRunable("haoran_10", mike)).start();
new Thread(new TalkRunable("conge", mike)).start();
new Thread(new TalkRunable("haoran", mike)).start();
}
static class TalkRunable implements Runnable{
private String name;
private Object mike;
public TalkRunable(String name , Object mike){
this.name = name;
this.mike = mike;
}
@Override
public void run() {
while(true){
synchronized (mike) {
System.out.println(name + (new Date()));
mike.notifyAll();
try {
mike.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
?
原文:http://haoran-10.iteye.com/blog/2312014