并发编程学习笔记 三------- 关于在if中和while中使用wait(),唤醒以后的区别

volatile int count;
int MAX_COUNT = 10;
    int MIN_COUNT =0;
public synchronized void  push(){
    while (count>=MAX_COUNT){
        try {

            System.out.println(Thread.currentThread().getName()+"need wait");
            wait();
            System.out.println(Thread.currentThread().getName()+"doNotify");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

若是使用while的时候,当该线程被唤醒时,首先执行while中的条件进行判断,若是成功,则从wait()处以后进行执行,不然继续wait(),能够认为属于执行wait前一步java

若是将while改为if,则唤醒时,再也不进行判断,直接从wait()以后进行执行,这种情形,在effective java一书中有说起,可是没有更深的解释,我的猜想为while跟if的特性有关。具体找到明确解释,后期补上,知道原理的朋友,请给我留言,十分感谢线程

相关文章
相关标签/搜索