繁体   English   中英

仅使用同步块构建wait()/ notify()机制

[英]build wait()/notify() mechanism only with synchronized blocks

是否可以仅使用Java中的同步块来建立等待/通知机制? 这意味着要使用outwait()/ notify()方法创建此机制,但要使用同步块,静态字段,易失修饰符。

当然可以,但是由于迫不及待,您将被迫忙于循环:

 public class Signal {

     private boolean signal;

     public void waitForSignal() {
          while (true)
               sychronized (this) {
                    if (signal) {
                        signal = false;
                        break;   
                    }
               }
           }
     }

     public synchronized void notifyWithSignal() {
          signal = true;
     }
}

粗略但基本上是等待/通知的内容。 只有它不循环等待,而是使用OS将CPU分配给另一个线程,直到信号变为真为止。

可以通过将“信号”声明为易失性并删除同步块来完成相同的操作。 或使用AtomicBoolean作为信号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM