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

Creating multiple threads for writing files to Disk, Java

我有一段代码将对象写入磁盘,作为将对象放入 LinkedBlockingQueue 的时间。

到目前为止,这是单线程的。我需要让它成为多线程,因为内容被写入 disk.and 上的不同文件,因此,独立编写它们没有坏处。

我不确定我是否可以在这里使用线程池,因为我不知道对象什么时候会被放入队列!!现在如果我决定有一个 5 个线程的 fixedThreadPool,我该如何在多个对象之间分配它?

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

一般来说,如果您的文件位于同一物理设备上,您将不会获得任何性能优势,因为存储设备在 read/write 操作上同步工作。因此,您的线程会在 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
}