java多线程学习笔记(八)

本节开始线程间通信:

  1. 使用wait/notify实现线程间通信
  2. 生产者/消费者模式的实现
  3. 方法join的使用
  4. ThreadLocal类的使用

可以通过使用 sleep() 结合 while(true) 死循环来实现线程间的通信

通过使用while(true){  if(条件)  } 来检查某个数据,满足条件时结束循环,线程会处在不断运行的状态,会浪费CPU资源

wait/notify 机制应运而生(等待通知机制)

方法wait()的作用是使当前执行代码的线程等待,将当前线程放置到“预执行队列”中,并且在wait所在的代码行处停止执行,知道接收到通知或者被中断为止。在调用wait之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait方法。执行wait方法之后,当前线程会释放锁。

方法notify也要在同步方法或者同步块中使用,即在调用前必须获得对象级别的锁。notif会随机挑选一个wait状态的线程,对其发送notify通知,并使他等待获得该对象的对象锁。在执行notify方法之后,当前线程不会立马释放掉该对象锁,呈wait状态的线程也不能马上获得该对象锁,要等待执行notify方法的线程将所有程序执行完也就是退出synchronized代码块后,当前线程才会释放锁。

猜你喜欢

转载自www.cnblogs.com/samanian/p/11979887.html