我有一段代码将对象放入LinkedBlockingQueue时将对象写入磁盘。
到目前为止,这是单线程的。我需要使它成为多线程的,因为内容正被写入磁盘上的不同文件。因此,独立编写它们不会有任何危害。
我不确定我是否可以在这里使用ThreadPool,因为我不知道何时将对象放置在队列中!现在,如果我决定使用5个线程的fixedThreadPool,如何在多个对象之间分配它?
任何建议,高度赞赏。这是我现有的代码。当我在队列中获得新对象时,我想生成一个新线程。
how do i distribute it among multiple objects?
好吧,您不必担心任务分配。您需要做的就是提交一个runnable或callable(描述您的任务),它将被交给池中的空闲线程,或者如果所有线程都在忙于处理,那么这个新任务将在队列中等待。
以下是您可以尝试的...
1)创建最适合您的线程池。
ExecutorService es = Executors.newFixedThreadPool(desiredNoOfThreads);
2)由于您已经有了队列-
while (true) {
//peek or poll the queue and check for non null value
//if not null then create a runnable or callable and submit
//it to the ExecutorService
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句