扫码关注官方订阅号
走同样的路,发现不同的人生
java.util.concurrent.LinkedBlockingQueue 楼主可以直接使用这个队列,是线程安全的。
java.util.concurrent.LinkedBlockingQueue
queue.take() 获取数据,如果当前没有数据,则阻塞直到返回可用数据queue.poll() 获取数据,如果当前没有数据,返回nullqueue.pool(timeout, TimeUnit) 获取数据,如果没有数据,阻塞一定的时间后如果有数据直接返回,没有则返回null
queue.take()
queue.poll()
null
queue.pool(timeout, TimeUnit)
楼主这个是典型的生产者/消费者模式,可以参考如下的问答。{求解答}一个有关互斥锁的问题
现成的不知道有没有,自己实现的话可以用信号量。
另外你目前sleep的实现方式应该没什么问题的,对效率的影响很有限。其实阻塞在底层实现是也是sleep的,只不过时间更短。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
queue.take()
获取数据,如果当前没有数据,则阻塞直到返回可用数据queue.poll()
获取数据,如果当前没有数据,返回null
queue.pool(timeout, TimeUnit)
获取数据,如果没有数据,阻塞一定的时间后如果有数据直接返回,没有则返回null
楼主这个是典型的生产者/消费者模式,可以参考如下的问答。
{求解答}一个有关互斥锁的问题
现成的不知道有没有,自己实现的话可以用信号量。
另外你目前sleep的实现方式应该没什么问题的,对效率的影响很有限。其实阻塞在底层实现是也是sleep的,只不过时间更短。