java – 我们如何在对象中创建`notify()`方法?

我在接受采访时被问到这个问题.

How you can create your own notify() method ?

我告诉这是一种本地方法,不能被覆盖.

但她对答案不满意.

谁能解释一下?

最佳答案 我猜访问者想要一个等同于wait / notify机制的java实现,而不直接使用Object.wait()和Object.notify().

例如,以下任何高级同步机制都可用于模拟wait / notify:

> BlockingQueue实现
> SynchronousQueue
> CountDownLatch
> CyclicBarrier
>期货

但请注意,语义可能与wait / notify略有不同.与标准等待/通知不同,例如,使用阻塞队列,您可以获得服务器线程捕获“通知”的优势,即使它在通知时没有等待.

以下是使用SynchronousQueue的非常简单的实现:

public class WaitNotify {
  private final Object ITEM = new Object(); 
  private final SynchronousQueue<Object> q = new SynchronousQueue<Object>();

  public void myNotify() {
    q.offer(ITEM);
  }

  public void myWait() throws InterruptedException {
    q.take();    
  }
}
点赞