分析&回答
Java生产者消费者是最基础的线程同步问题,大概整理了一下有5种生产者消费者的写法,分别如下。
- 用synchronized对存储加锁,然后用object原生的wait() 和 notify()做同步。
- 用concurrent.locks.Lock,然后用condition的await() 和signal()做同步。
- 直接使用concurrent.BlockingQueue。
- 使用PipedInputStream/PipedOutputStream。
- 使用信号量Semaphore。
反思&扩展
线程池的核心就是:生产者-消费者模型