背景
假如你的需求要处理一个很大的集合,并且处理时间希望越开越好。正常你就是启动一个方式,以单线程的方式慢慢处理。下面
我会编写一个多线程方案改善你的代码。
实施方案
将集合拆分成多个子集合,数据分片
引入三方,guava
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
示例代码
List<List<File>> partition = Lists.partition(files, 16);
一个分片集合用一个线程进行处理
这块我只提供的是方案,代码是伪代码,正常需要用线程池,如果你这块代码不会写,可以给我评论留言你的需求,我会按
照你的留言给你写真实的代码
for (List<File> fileList : partition) {
new Runnable() {
public void run() {
for (File file : fileList){
}
}
}
}