繁体   English   中英

创建多个线程以将文件写入磁盘,Java

[英]Creating multiple threads for writing files to Disk, Java

我有一段代码将对象放入LinkedBlockingQueue时将对象写入磁盘。

到目前为止,这是单线程的。 我需要使它成为多线程的,因为内容正在被写入磁盘上的不同文件。因此,独立编写它们不会有任何危害。

我不确定我是否可以在这里使用ThreadPool,因为我不知道何时将对象放置在队列中! 现在,如果我决定使用5个线程的fixedThreadPool,如何在多个对象之间分配它?

任何建议都非常感谢。 这是我现有的代码。 当队列中有新对象时,我想生成一个新线程。

一般而言,如果文件位于同一物理设备上,则由于存储设备在读取/写入操作中同步工作,因此不会获得性能上的好处。 因此,您的线程将被阻塞在I / O上,这可能导致速度降低,并且肯定会浪费可能在做有用工作的线程。

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM