等待队列
每个实例都有一个等待,他是在实例的wait方法执行后停止操作的队列,除非发现以下情况,线程才会退出等待队列
1.有其他线程的notify方法来唤醒线程
2.有其他线程的notifyAll方法来唤醒线程
3.有其他方法的interrupt方法来唤醒线程
4.wait方法超时
wait方法----将线程放入等待队列
如果执行了obj.wait();线程会展厅运行。并进入到obj的等待队列中。这叫做线程正在obj上wait。
wait(); (1)
this.wait() (2)
如果执行wait方法,线程必须有锁。流程如下
线程A syncharonized方法 wait();
线程B syncharonized方法
1.获取线程锁的线程A执行wait方法,
2.线程A进入等待队列,释放锁
3.线程B获取锁