簡體   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