【发布时间】:2016-06-07 07:21:04
【问题描述】:
为什么等待和通知功能在同一个类锁上不能正常工作?
请查看下面的代码以了解等待和通知功能及其输出。
输出:
Thread-1
Thread-2
Thread-2 after notify
预期结果:
Thread-1
Thread-2
Thread-2 after notify
Thread-1 after wait
代码:
public class WaitAndNotify1 {
public static void main(String[] args) {
Thread t1=new Thread(new Runnable(){
@Override
public void run(){
System.out.println("Thread-1");
try {
synchronized (this) {
wait();
System.out.println("Thread-1 after wait");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread t2=new Thread(new Runnable(){
@Override
public void run(){
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread-2");
synchronized (this) {
notify();
System.out.println("Thread-2 after notify");
}
}
});
t1.start();
t2.start();
}
}
【问题讨论】:
-
如果你以后能正确地格式化你的代码,那真的很有帮助......
标签: java multithreading java-threads