有两个主题。一个是操纵x而另一个是显示x。如何使用synchronized,interrupt,wait和notify进行互斥。图像显示了这一点。
我想出了这个解决方案,但我不确定它是否正确。
写
synchronized(x){
x = x + 1;
notify();
try{
wait();
}
catch(InterruptedException e){
}
}
读
synchronized(x){
try{
wait();
}
catch(InterruptedException e){
}
System.out.print(x);
}
答案 0 :(得分:0)
您已经使用synchronized(x) {}
关闭来确保不会发生这种情况。你在做什么是正确的。如果您的语句采用单独的方法,您还可以使方法同步,以便在它离开此方法之前不会受到影响。
public synchronized void doSmth() {
//do smth;
}