java 关于wait,notify和notifyAll

public synchronized void hurt() {
  //...
  this.wait();
  //...
}
public synchronized void recover() {
   //...
   this.notify();
}

这里需要强调的是,wait方法和notify方法,并不是Thread线程上的方法,它们是Object上的方法。 

因为所有的Object都可以被用来作为同步对象,所以准确的讲,waitnotify是同步对象上的方法。

wait()的意思是: 让占用了这个同步对象的线程,临时释放当前的占用,并且等待。 所以调用wait是有前提条件的,一定是在synchronized块里,否则就会出错。

notify() 的意思是,通知一个等待在这个同步对象上的线程,你可以苏醒过来了,有机会重新占用当前对象了。

notifyAll() 的意思是,通知所有的等待在这个同步对象上的线程,你们可以苏醒过来了,有机会重新占用当前对象了。

posted @ 2018-09-08 00:19  Draymonder  阅读(445)  评论(0编辑  收藏  举报