java中的通知和等待意味着什么?

时间:2015-10-01 09:37:59

标签: java

我有代码,我正在学习Thread。我不明白它在下面的代码中是如何工作的。我的代码正在处理交通灯处理。你能用下面的代码解释一下吗?

public void run(){
    while(!stop){
        try{
            switch(lc){
                case GREEN:
                    Thread.sleep(1000);break;//pause for ten second;
                case RED: 
                    Thread.sleep(2000);break;
                case YELLOW:
                    Thread.sleep(1000);break;
            }
        }
        catch(Exception exc){}
         colorChange(); 
    }

}
synchronized void colorChange(){
    switch(lc){
        case GREEN:
            lc=LightColor.YELLOW;break;
        case YELLOW:
            lc=LightColor.RED;break;
        case RED:
            lc=LightColor.GREEN;break;
    }
    changed=true;
    notify();
}
synchronized void waitChange(){
    while(!changed)
         try {
             wait();
             changed=false;
        } catch (InterruptedException ex) {
            Logger.getLogger(ControlLight.class.getName()).log(Level.SEVERE,null, ex);
        }

}

2 个答案:

答案 0 :(得分:0)

要解释的简要说明是:

var nodes = document.querySelectorAll('#list > *:not([type="text/javascript"])');
alert(nodes.length);

有关Thread的详细信息,请参阅:http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait%28%29

希望这有帮助!

答案 1 :(得分:0)

wait():告诉调用线程放弃监视器并进入休眠状态,直到某个其他线程进入同一个监视器并调用notify()。

notify():唤醒在同一个对象上调用wait()的第一个线程。

wait-notify模式用于一组广泛的案例,其中一个线程需要告诉其他线程发生了某些事件。这些方法旨在提供一种机制,允许线程阻塞,直到满足特定条件。