2020-10-31:java中LinkedTransferQueue和SynchronousQueue有什么区别?

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

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


评论

福大大架构师每日一题 文章被收录于专栏

最新面试题,针对高级开发人员和架构师。内容是后端、大数据和人工智能。

全部评论

相关推荐

点赞 评论 收藏
分享
肥肠椒绿:双非本可不就犯天条了,双非本就应该打入无间地狱
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务