【发布时间】:2010-03-09 20:36:43
【问题描述】:
我有多个线程,每个线程都有自己的私有并发队列,它们所做的只是运行一个无限循环从中检索消息。其中一个队列可能会在一段时间内(可能是几秒钟)没有接收到消息,并且它们可能会大量出现,因此需要快速处理。
我想知道在第一种情况下最适合做什么:使用阻塞队列并阻塞线程,直到我有更多输入或执行 Thread.yield()?
我希望在给定时间拥有尽可能多的可用 CPU 资源,因为并发线程的数量可能会随着时间的推移而增加,但我也不希望消息处理落后,因为无法保证当执行 yield() 时线程将被重新调度执行。我知道硬件、操作系统和其他因素在这里起着重要作用,但抛开这些,从 Java(JVM?)的角度来看,什么是最优化的?
【问题讨论】:
标签: java multithreading concurrency