java多线程
yield
当前服务线程需要让出cpu给其他同优先级线程,即让步。它只能使同优先级的线程有执行的机会。只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。
sleep
休息一段时间,不推荐使用,可用wait()。它可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会。
wait
当调用它时,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其它synchronized数据可被别的线程使用。wait()和notify()因为会对对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized块中进行调用。如果在non-synchronized函数或non-synchronized块中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException异常。
实例
try {
synchronized(this){
wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}