用Java通知和等待

时间:2014-10-19 16:16:15

标签: java multithreading notify

我遇到了notify()和wait()的问题。 我希望我的主线程能够强制其他线程等待并随时通知我。 似乎我不明白一切,因为通知不起作用。我无法访问我的NOTIFY方法。

这是我的代码:

MAIN THREAD:

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();
            }

    }

}

My THREAD Class:

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();

    }   
}

2 个答案:

答案 0 :(得分:1)

同步你的NOTIFY方法。也可以使用watek.NOTIFY()代替TH.NOTIFY()。

答案 1 :(得分:1)

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