多线程之间的通信
方法1:通过访问共享变量的方式(注:需要处理同步问题)
方法2:通过管道流
两个线程间共享数据
通过共享对象(用wait和notify方法)
使用像阻塞队列这样并发的数据结构
notify
和 notifyAll
的区别
notify()方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有用武之地
notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程能继续运行
为什么wait, notify 和 notifyAll这些方法不在thread类里面?
由于wait,notify和notifyAll都是锁级别的操作,所以把他们定义在Object类中因为锁属于对象
JAVA提供的锁是对象级的而不是线程级的