Guarded Wait VS Busy Wait
Guarded Wait
意思是“被阻挡而等待”,大致上是线程使用wait等待,等到被notify或者被notifyAll后再次执行测试条件的测试方法。使用wait等待的时间,其实是停止在等待区间里停止执行,所以不会浪费到java执行环境的处理时间。
******等待的范例****** *******唤醒的范例*******
while(!ready){ ready = true ;
wait(); notifyAll();
}
******************* *********************
Busy Wait
意思是“忙碌的等待”。线程不使用wait等待,而是使用yield(尽可能把优先级让给其他的线程),并不断的测试条件的实现方法。因为等待中的线程也持续的运行着,所以会浪费java虚拟机的时间。yield是Thread类的方法。
******等待的范例****** *******唤醒的范例*******
while(!ready){ ready = true ;
Thread.yield();
}
******************* *********************