什么java并发阻塞集合最性能友好?

时间:2015-04-06 09:05:21

标签: java multithreading performance collections concurrency

我已经阅读了很多关于Java中的并发队列但是我不知道在省略优先公理时要使用什么。

以下是真实情况 - 我使用以下属性实现了自己的执行程序:

  • 无界("直到无限"任务等待)
  • 递归(任务可能会将新任务生成到同一个任务池中),这就是为什么我无法使用Java执行器 - 等待最后执行会导致运行时出现异常任务创造新任务。
  • 线程安全(多个线程可以添加或检索任务)
  • 非阻止(在添加新任务方面)
  • 阻止(在等待执行方面)

工作线程正在处理任务(runnables)或被阻止,等待新任务出现在任务池中。

我打算最大化性能,所以我避免使用锁和条件变量。然而,真正的表现并不够好(见下文) - 使用LinkedBlockingQueue作为任务池。

我意识到我实际上并不关心先执行哪个任务,因此队列似乎有点矫枉过正。我认为某种套装或包装"足够,希望更快。

问题:您建议我使用哪种收集和/或一般方法?

我的基准 - 我安排了1000个任务,每个Thread.sleep(15)。我已经测量了运行1000次任务的壁挂时间;然后执行者的壁垒时间。加速仅略高于一半的线程(在2,4,6,......,48上测量)线程。

0 个答案:

没有答案