package com.demo5;
import java.util.ArrayList;
import java.util.List;
public class ThreadForeach {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<666;i++) {
list.add(i);
}
new ThreadForeach().deal(list, 5);
//System.out.println(list.toString());
}
public synchronized void deal(List<Integer> data,int threadNum) {
int length=data.size();
int t1=length%threadNum==0?length/threadNum:length/threadNum+1;
for(int i=0;i<threadNum;i++) {
int end=(i+1)*t1;
Thread t=new HandleThread("线程"+(i+1),data,i*t1,end>length?length:end);
t.start();
}
}
}
class HandleThread extends Thread{
private String threadName;
private List<Integer> data;
private int start;
private int end;
public HandleThread(String threadName, List<Integer> data, int start, int end) {
super();
this.threadName = threadName;
this.data = data;
this.start = start;
this.end = end;
}
@Override
public void run() {
List<Integer> subList = data.subList(start, end);
System.out.println(threadName+"处理了"+subList.size()+"条!");
}
}
运行结果:
线程2处理了134条!
线程1处理了134条!
线程4处理了134条!
线程3处理了134条!
线程5处理了130条!