java等待使用同步关键字的通知方法

时间:2016-07-17 21:18:04

标签: java multithreading wait synchronized notify

我需要有人在java中为我简化等待通知方法。 我现在看了大概200个网站但仍然不明白。

我正在开发一个程序,需要让一个线程等待,直到从另一个线程调用notify ...

for (auto i: 1..n) ... 

1 个答案:

答案 0 :(得分:1)

等待需要在第一个Runnable中发生,你需要访问一个Object实例来等待,所以t1 Thread实例将不起作用。在这段代码中,我创建了一个单独的锁对象。

public static void main(String[] args) {
    final Object lock = new Object();
    new Thread(new Runnable() {
        @Override
        public void run() {
            synchronized(lock) {
                try {
                    lock.wait();
                    System.out.println("lock released");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();
    System.out.println("before sleep");
    try {
        Thread.sleep(1000);
        System.out.println("before notify");
        synchronized(lock) {
            lock.notify();
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

使用线程通知可能非常难以测试。我建议使用基于消息的方法,如Akka