0.前言
推荐新手先阅读基础篇
http://t.csdnimg.cn/Xrq8a
1.前提条件
线程同步是线程通信的前提
线程同步常用方法:sychronized关键字,Lock接口
2.两种线程通信方式
2.1定义
Monitor——同步监视器,对象可以是任何类型,因此定义在Object类
Condition——Lock对象创建,并依赖于Lock
2.2通信方法
Monitor
wt():线程通过Monitor调用此方法,释放锁并等待
notify():唤醒一个等待的线程
notifyAll():唤醒所有等待的线程
Condition:
awt():线程通过Monitor调用此方法,释放锁并等待
signal():唤醒一个等待的线程
signalAll():唤醒所有等待的线程
2.3实现原理/机制
线程同步是基于同步队列实现的
而线程通信是基于等待队列实现的
当调用等待方法时,线程->等待队列 ;当调用通知方法时,等待队列线程->同步队列
线程通信中等待队列的区别
synchronized只有一个Monitor,所以它就只有一个等待队列
Lock对象可以创建出多个Condition,所以它拥有多个等待队列。
多个等待队列更灵活性,Condition的通信方式更为推荐