创建多线程 并获取线程全部执行完成

public void test() {
ExecutorService exe = Executors.newFixedThreadPool(10);
List<String> list = new ArrayList<>();
int size = 20;
List<String> list1 = Collections.synchronizedList(new ArrayList());
for (int i = 0; i < 100; i++) {
list.add(i+"");
}
for (int i = 0; i < 100; i++) {
int endIndex = 0;
if((i+1)*size>=list.size())
{
endIndex = list.size();
}
exe.execute( (Runnable) new TestThread(list,list1,i*size,(i+1)*size));
if(endIndex == list.size())
{
break;
}
}
exe.shutdown();
while (true) {
if (exe.isTerminated()) {
System.out.println("线程结束");
System.out.println(list1.size());
System.out.println(list1.toString());
break;
}
}
}

class TestThread extends Thread {
List<String> list;
List<String> list1;
int startIndex;
int endIndex;

TestThread(List<String> list,List<String> list1,int startIndex,int endIndex) {
this.list = list;
this.list1 = list1;
this.startIndex = startIndex;
this.endIndex = endIndex;
}

public void run(){
for(int i=startIndex;i<endIndex;i++)
{
list1.add(list.get(i));
}
}
}

 

posted @ 2019-11-29 16:08  closeIt  阅读(199)  评论(0编辑  收藏  举报