如何解决Java线程从同一目录加载多个文件
| 我想要从单个目录通过多个线程加载文件的策略,而又不会意外地通过多个线程加载同一文件。 解: 允许每个线程顺序收集文件集以添加其数据结构(例如arraylist和并行处理)。 取文件名,无论如何,最后5位数字都是数字,执行mod(last5digit,5) +1
将得到1,2,3,4,5
,而具有mod结果的文件将分别由对应的Thread 1
,...Thread 5
处理。
我想要一个不存在互斥问题的解决方案。请根据您的经验告诉我您的意见。
解决方法
本质上,任何对列表的线程安全访问都应该起作用。我想我会:
将文件列表放入BlockingQueue
让每个线程连续从队列中取出下一个项目(文件)并进行处理。
, 将所有文件推送到“ 4”上,并让您的线程池将文件从队列中拉出。
这样,就不会同时访问任何文件,也不需要任何互斥。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。