2011-06-25 99 views
1

我想要通過多個線程從單個目錄加載文件的策略,而不會意外地通過多個線程加載相同的文件。Java線程從同一目錄加載多個文件

解決方案:

  1. 允許每個線程順序地收集一組文件在其數據結構中添加如ArrayList和處理並行。

  2. 取文件名,反正最後5位數字是數字,做一個​​會給1,2,3,4,5並分別與MOD因此這些文件將被相應Thread 1,... Thread 5進行處理。

我想要一個解決方案,不應該有互相排斥problem.kindly讓我知道你的意見,從你的經驗。

回答

1

基本上任何線程安全訪問列表應該工作。我想我會:

  • 把文件列表中BlockingQueue
  • 讓每個線程不斷採取從隊列中的下一個項目(文件),並對其進行處理。
1

將所有文件推送到BlockingQueue並讓您的線程池將文件從隊列中拉出。

這樣,沒有文件將被同時訪問,並且不需要任何互斥。