快看这个线程(高手进)帮忙修改

ldzyz007 2007-02-02 02:29:16
文件1 :Test.javapackage test;

import java.util.ArrayList;
import java.util.List;


/**
* 我想做的是:每次循环里面运算一批数据,为了加快对这批数据的处理,在每一个循环中启用多线程来运算。
* 我想每个循环结束后再继续下一次。
* 但运行结果不是这样,它是每一个循环开始启用线程后(这些线程可能还没有运行),立即进入下一次循环了。
*/
public class Test
{
public static void main(String args[]) throws Exception
{
int threadNumber = 100; //线程数
int cycle = 10; //循环次数
int number = 5000; //每个循环要处理的数量

MyThread myThread[] = new MyThread[threadNumber];
long begin = System.currentTimeMillis();


for(int i=0;i<cycle;i++){
System.out.println("第"+i+"次循环开始");
List list = new ArrayList();
for(int j=0;j<number;j++){
list.add(i+"="+j);
}

int numberPerThread = number / threadNumber; //每个线程要处理的数据


for(int k=0;k<threadNumber;k++)
{
int startList = k * numberPerThread;
int endList = (k+1) * numberPerThread;

myThread[k] = new MyThread();
myThread[k].setList(list.subList(startList,endList));
myThread[k].start();
}
System.out.println("第"+i+"次循环结束");
}

long end = System.currentTimeMillis();
System.out.print("time=" + (end-begin));
}
}

文件二:MyThread.javapackage test;

import java.util.List;

public class MyThread extends Thread{
List list = null;

public void setList(List list) {
this.list = list;
}

public void run() {
for(int i=0;i<list.size();i++){
System.out.println(getName()+" i="+i);
}
}
}
...全文
226 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldzyz007 2007-02-05
  • 打赏
  • 举报
回复

我去实验
bluesmile979 2007-02-02
  • 打赏
  • 举报
回复
主线程

while(count!=threadcount){
wait();
}

子线程结束时
主线程.count++
notifyall()
bluesmile979 2007-02-02
  • 打赏
  • 举报
回复
主线程

while(count!=threadcount){

}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧