如果是用while作判断,每次wait被notify唤醒后都要先判断当前队列是否为空,而if做判断时,如果wait被唤醒,则不管三七二十一直接获取队列元素,此时如果队列元素被其他线程取走,那么该线程就报nosuchelement exception
用if为啥就不走判断了?
不是不走判断,是if只走一次,执行wait()的时候,if已经执行过了
Sign in to make a reply
alienation
如果是用while作判断,每次wait被notify唤醒后都要先判断当前队列是否为空,而if做判断时,如果wait被唤醒,则不管三七二十一直接获取队列元素,此时如果队列元素被其他线程取走,那么该线程就报nosuchelement exception