wait()与notify()还有notifyAll()方法都是object对象的方法,他们控制者对象线程的状态变化。
所以他们只能用在关键字syn里面。
使用他们的时候的注意点。
syn可以用当前线程this作为锁,也可以用对象锁(对象可以是Object对象也可以是list等等)
1.被wait()的对象进入线程池,会释放掉锁
2.必须是在其他线程中相同对象调用notify()才可以让处于wait的对象重新进入队列,并在本对象的syn执行完,处于队列的对象才能再次竞争锁
3.线程开启的方法只有用Start(),如果你直接调用线程类的方法是不可行的,线程并没有开启
4.在3的基础上,调用notify和wait必须在同一个线程类中调用。即不可以新建一个线程类(因为就不是一个线程了)或者直接调用该方法。需要的是把该线程类传入另外一个线程中。
5.在wait恢复锁以后,可以继续执行wait之后的代码
网友评论