Java中线程间通信
1. 线程间通信(通讯): 多个线程在处理同一个资源,但任务不同。
一、等待/唤醒机制:
1. 涉及的方法:
(1) wait(); 使线程处于冻结状态,被wait的线程会存储到线程池(等待集)中;
(2) notify(); 唤醒线程池中的一个线程,这个线程是任意的;
(3) notifyAll(); 唤醒线程池中的所有线程。
2. 这些方法都必须定义在同步中,因为这些方法是用于操作线程状态的方法;而且必须要明确到底操作的是哪个锁上的线程。即必须明确线程由那个监视器监视。
3. 监视器: 就是所说的锁。
4. 为什么操作线程的方法wait()、notify()、notifyAll()定义在了Object类中?
答:因为这些方法就是监视器的方法,监视器就是锁,锁可以是任意的对象,如Object obj = new Object();既然可以是任意对象,那么这些方法需要定义在最高的类中,即定义在Object类中。
5、管道通信
6、内存共享