我有一堆物品。它们不需要分类或订购。他们有一个需要调用的方法:myObject.update()。最终他们需要从容器中移除。
现在它是单线程的,而update()方法是CPU绑定的(没有I / O)。我们有一个很好的服务器,有16个“核心”(核心+ HT)。
我想做的是让一个容器对象负责“抛出”对象。然后是15个线程在需要时向容器请求新对象。这是一个很好的方法吗?
什么是用于保存对象的线程安全数据结构?或者我应该让容器对象负责不发送两次相同的对象?
答案 0 :(得分:1)
在java中,您的问题的优秀候选人是LinkedBlockingQueue
和ArrayBlockingQueue
。
它们提供先进先出功能,并且一次性保留元素数量的可选界限。
或者,一个好的方法是使用ExecutorService
,它包含一个线程池和一个内部队列,用于按需提供线程。