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();
}


posted on 2012-02-26 02:28  亭子  阅读(113)  评论(0编辑  收藏  举报

导航