福哥答案2020-11-01:
SynchronousQueue:线程A使用put将数据添加到队列,如果没有其他线程使用take去获取数据,那么线程A阻塞,直到数据被其他线程获取,同理 如果线程B从队列中获取数据为空,被阻塞,等待线程添加数据。

LinkedTransferQueue:LinkedTransferQueue使用put,tryTransfer和transfer可添加多条数据, LinkedTransferQueue具有SynchronousQueue的功能,但是LinkedTransferQueue的生产者不会阻塞。
tryTransfer和transfer与put不同的是,tryTransfer和transfer可检测是否有线程在等待获取数据,检测到则直接唤醒等待线程将数据给这个线程而不用放入队列。


评论