Ita*_*man 5 java multithreading
我有两个主题.生产者正在生成数据片段(String对象),消费者处理这些字符串.问题是我的应用程序只需要处理最新的数据对象.换句话说,如果生产者设法生成两个字符串"s1"然后"s2",那么我希望消费者只处理"s2"."s1"可以安全地丢弃.
当然,实现实现此行为的类没有问题,但我想使用java.util.concurrent中的标准机制(如果存在这样的机制).请注意,SynchronousQueue不是一个好的解决方案:消费者将在排队"s1"时阻止,并且不会有机会产生"s2".
(简而言之,我正在寻找具有阻塞删除操作和非阻塞设置操作的单元素集合)
有任何想法吗?
我认为你最好的答案可能是使用 ArrayBlockingQueue,其中生产者(你只有一个生产者,对吧?)在添加新元素之前删除任何现有元素。
当然,此实现中存在竞争条件:消费者可以在生产者删除元素之前开始处理该元素。但无论您使用什么数据结构,这些竞争条件都将始终存在。
归档时间: |
|
查看次数: |
5064 次 |
最近记录: |