Java中的通知和等待

Java中的通知和等待,java,multithreading,notify,Java,Multithreading,Notify,我对notify()和wait()有问题。 我希望我的主线程能够强制其他线程等待,并在需要时通知。 好像我不明白所有的事情,因为通知不起作用。我无法使用我的通知方法 这是我的密码: 主线程: public class troll { static Runnable R0; static Thread TH; public static void main(String[] args) { System.out.println("TROLOLOLL0"

我对notify()和wait()有问题。 我希望我的主线程能够强制其他线程等待,并在需要时通知。 好像我不明白所有的事情,因为通知不起作用。我无法使用我的通知方法

这是我的密码:

主线程:

public class troll {

    static Runnable R0;
    static Thread TH;

    public static void main(String[] args) {

        System.out.println("TROLOLOLL0");
        watek R0 = new watek();
        Thread TH = new Thread(R0);

        synchronized(TH){
            TH.start();
            R0.NOTIFY();
            }

    }

}
我的线程类:

public class watek implements Runnable {

    public watek(){

    }

    public  void run() {


        System.out.print("STOP");
            this.WAIT();
            System.out.print("Running again");

    }


    public synchronized void WAIT(){
        try {
            wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }   

    public  void NOTIFY(){
        notify();

    }   
}

同步通知方法。还可以使用watek.NOTIFY()而不是TH.NOTIFY()。

您只需要进行一场比赛。
main
方法中对
NOTIFY
的调用可能发生在新线程中的
wait
之前。然后就没有什么东西可以唤醒它了。

在类
watek
中定义了
NOTIFY
方法,但是您尝试在
线程上调用它。改为在
watek
对象上调用它:
R0.NOTIFY()
而不是
TH.NOTIFY()
。完成了,但现在wait()要花很长时间。为什么需要同步该方法?他们已经在main方法中锁定了监视器。在使用wait/notify/notify之前,您需要拥有目标对象的监视器(这里您的目标是watek)。啊,我以为他们已经同步了
synchronized(RO)
@user3402584,[他说的,…],因为如果其他线程没有在foo中等待,foo.notify()根本不做任何事情。wait(). 对象foo不记得通知过它。