Java 线程之间如何通信?
文章目录
- Java 线程之间如何通信?
- 1. 共享内存
- 2. 消息传递
- 3. 并发库中的工具类
- 4. 线程池中的任务提交与结果获取
- 5. 内存一致性
- 6. Java 8 引入的并行流
在 Java 中,线程之间的通信是并发编程中的一个重要问题。线程之间的通信主要有两种方式:共享内存和消息传递。
1. 共享内存
●synchronized 关键字:通过锁机制保证多个线程对共享资源的同步访问。只有一个线程可以访问同步块或方法,其他线程必须等待。
●volatile 关键字:确保变量在多线程环境下的可见性。当一个线程修改了某个变量的值,其他线程可以立即看到修改后的值,而不会读取到缓存中的旧值。
●wait()/notify()/notifyAll() 方法:这些方法在 Object 类中定义,用于实现线程的协调。wait() 方法让线程进入等待状态,notify() 或 notifyAll() 唤醒等待的线程。
2. 消息传递
BlockingQueue:这是一个线程安全的队列,用于在生产者和消费者线程之间传递数据。当队列为空时,消费者线程会阻塞等待数据;当队列满时,生产者线程会阻塞等待空间。
PipedInputStream/PipedOutputStream