我在接受采访时被问到这个问题.
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();
}
}