使用等待,同步,中断和通知进行互斥

时间:2017-11-04 03:02:39

标签: multithreading synchronization wait notify mutual-exclusion

有两个主题。一个是操纵x而另一个是显示x。如何使用synchronized,interrupt,wait和notify进行互斥。图像显示了这一点。

Execution image

我想出了这个解决方案,但我不确定它是否正确。

synchronized(x){
    x = x + 1;
    notify();
    try{
        wait();
    }
    catch(InterruptedException e){
    }
}

synchronized(x){

    try{
         wait();
    }
    catch(InterruptedException e){
    }
    System.out.print(x);
}

1 个答案:

答案 0 :(得分:0)

您已经使用synchronized(x) {}关闭来确保不会发生这种情况。你在做什么是正确的。如果您的语句采用单独的方法,您还可以使方法同步,以便在它离开此方法之前不会受到影响。

public synchronized void doSmth() {
    //do smth;
}