我正在尝试调整执行以下操作的线程:
只有 1 个线程的线程池[CorePoolSize =0, maxPoolSize = 1]
使用的队列是ArrayBlockingQueue
Quesize = 20
背景:
线程尝试读取请求并对其执行操作。
但是,最终请求增加得如此之多,以至于线程总是很忙并消耗 1 个 CPU,这使其成为资源占用。
我想要做的是,而是每隔一段时间对请求进行采样并处理它们。可以安全地忽略其他请求。
我要做的就是在“操作”函数中设置一个睡眠,这样对于每个任务,线程都会睡眠一段时间并释放 CPU。
问题:
但是,我想知道是否有一种方法可以使用一个队列,该队列基本上本身会在读取下一个元素之前休眠一段时间。这将是理想的,因为在执行过程中休眠任务并保持执行不完整对我来说听起来并不是最好的。
如果您对任务还有其他建议,请告诉我
谢谢。
编辑:我在这里添加了一个后续问题, 将 maxpool 大小更正为 1 [匆忙编写] .. 感谢 tim 指出。