JAVA動態開啟多個執行緒
public boolean invokeThreadMethod(List list){
int num = 1000; //定 義每個執行緒執行的資料量
List thdList = null;
Thread thread = null;
boolean flag = false;
//根據資料量確定開多少個執行緒
int temp = list.size()/num;
int begin = 0;
int end = 0;
//判斷資料量是否小於num
if(temp == 0){
thread = new Thread(new MyThread(list));
MyThread.threadList.add(thread);
thread.start();
}
//根據資料量動態開啟多執行緒
for(int i=0;i<temp;i++){
begin = i*num;
if(i == (temp-1)){
end = list.size();
}else{
end = i*num+num;
}
thdList = new ArrayList();
for(int j=begin;j<end;j++){
thdList.add((Httz)list.get(j));
}
thread = new Thread(new MyThread(thdList));
MyThread.threadList.add(thread);
thread.start();
}
//判斷所有執行緒是否都執行完畢
while (true) {
List<Thread> threadList = MyThread.threadList;
for(int i=0;i<threadList.size();i++){
if(!((Thread)threadList.get(i)).isAlive()){
threadList.remove(i);
}
}
if(threadList.size()==0){
flag = true;
break;
}
}
return flag;
}