【发布时间】:2015-05-18 21:17:48
【问题描述】:
我一直在尝试制作一个简单的 Java 线程应用程序,其中一个线程等待,另一个线程在 3 秒后将其唤醒。但是,我似乎无法让它工作,我就是不知道为什么。
public class Deadlock extends Thread {
Object lock = new Object();
public static void main(String[] args) {
//WAITER THREAD
Deadlock waiter = new Deadlock() {
@Override
public void run() {
System.out.println("Waiter started");
synchronized(lock) {
try{
System.out.println("Waiter will wait for notify...");
lock.wait();
System.out.println("Woke up!");
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}//run()
};
//WAKER THREAD
Deadlock waker = new Deadlock() {
@Override
public void run() {
System.out.println("Waker started");
synchronized(lock) {
System.out.println("Waker sleeping for 3 seconds.");
try{
Thread.sleep(3000);
}catch(InterruptedException e) {}
System.out.println("Waker notifying...");
lock.notifyAll();
}
}//run
};
waiter.start();
waker.start();
}
}
我得到的输出是:
服务员开始
服务员将等待通知...
唤醒者开始
Waker 睡了 3 秒。
唤醒者通知...
...并一直运行下去。我希望等待服务员线程唤醒并终止程序。
谢谢
【问题讨论】:
标签: java multithreading wait notify