2011-06-25 42 views
1

我想要通过多个线程从单个目录加载文件的策略,而不会意外地通过多个线程加载相同的文件。Java线程从同一目录加载多个文件

解决方案:

  1. 允许每个线程顺序地收集一组文件在其数据结构中添加如ArrayList和处理并行。

  2. 取文件名,反正最后5位数字是数字,做一个​​会给1,2,3,4,5并分别与MOD因此这些文件将被相应Thread 1,... Thread 5进行处理。

我想要一个解决方案,不应该有互相排斥problem.kindly让我知道你的意见,从你的经验。

回答

1

基本上任何线程安全访问列表应该工作。我想我会:

  • 把文件列表中BlockingQueue
  • 让每个线程不断采取从队列中的下一个项目(文件),并对其进行处理。
1

将所有文件推送到BlockingQueue并让您的线程池将文件从队列中拉出。

这样,没有文件将被同时访问,并且不需要任何互斥。