Java线程从同一目录加载多个文件

时间:2011-06-25 09:47:12

标签: java multithreading file polling

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

解决方案:

  1. 允许每个线程按顺序收集要添加到其数据结构中的文件集,例如arraylist和process parallel。

  2. 取文件名,无论如何最后5位数字是数字,mod(last5digit,5) +1会给1,2,3,4,5,并且这些带有mod结果的文件将由相应的Thread 1处理, ... Thread 5

  3. 我想要一个不应该存在互斥问题的解决方案。请根据您的经验告诉我您的意见。

2 个答案:

答案 0 :(得分:1)

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

这样,不会同时访问任何文件,也不需要任何互斥。

答案 1 :(得分:1)

基本上任何对列表的线程安全访问都应该有效。我想我会:

  • 将文件列表放在BlockingQueue
  • 让每个线程不断从队列中获取下一个项目(文件)并进行处理。