public static void main(String args[])
{
Thread thread=new Thread(){
public void run(){
for (int i=0;i<200;i++) //循环200次,{
select se = new select();//这个类本身运行很耗CPU
se.select(200);
Enumeration e = se.ve.elements();
System.out.println(e.nextElement());//输出一个结果
}
try{sleep(500)}
catch(InterruptedException e){}
}
};
thread.start;
}
{
Thread thread=new Thread(){
public void run(){
for (int i=0;i<200;i++) //循环200次,{
select se = new select();//这个类本身运行很耗CPU
se.select(200);
Enumeration e = se.ve.elements();
System.out.println(e.nextElement());//输出一个结果
}
try{sleep(500)}
catch(InterruptedException e){}
}
};
thread.start;
}
thread.start;->thread.start();
你这个还是单一线程呀,只是有一个多线程的壳,实际还是单线程
一个是你需要循环200次的操作。你可以在main()中加入其他的操作,他就可以和这个后台
的操作同时操作了阿不知道你指的是什么?
String result[] = new String(200);//假设返回的是String
for(0..200){
//因为String是对象,传入它的引用,它会被线程修改,刚好达到返回的目的
Thread thread = new MyThread(result[i]);
thread.start();
}class MyThread extends Thread{
private String ret = "";
public MyThread(String s){this.ret=s;} public void run(){
.........
ret = ....;
}}GOOD LUCK!
不是已千为单位,而是以百为单位。我们常用得多线程解决问题一般是: 一个是前台的gui界面,另外一个是后台的操作,就好像我刚才给你举得那个例子(main()函数是前台的线程,后台运行你那200次循环),另外一个就是用多先程
对共享资源进行同步操作。总之线程绝对不是越多越好
总不能让200个CPU分别对这个类进行计算吧?
如果select这个类通过计算后,得出结果的时间大约为2~3秒,那么有没有办法分别计算200次呢?不要等到第一个结果出来之后再计算第2个结果这样的话,速度就非常慢了
200次*3秒=600秒,我都睡着了。
我不是太明白你说的,能不能详细一些呢?
select类的结果我把它加到了Vector中,拿出的话就是用select se = new select();
se.select(200); //放入参数
System.out.println(se.v.elementAt(0));//打印出来
se.select(200); //放入参数
这两个句子需要循环200次吗?每次都是一样的
谁也做不到。
因为你的每个计算都将耗损CPU的时间。
他们的总量是定值。
不是多线程就能解决的问题。这也不该用多线程来解决。多线程完成如下问题模型时,才有意义:
a b两个过程,如果先行执行a,再执行b,设他们的总时间为ta+tb,
如果ta与tb中任一个,有io操作等需要等待资源的时间浪费,
那么,开两个线程分别完成a,b任务,才会节省时间。宗上所诉:你的目的是达不到的。思考的方式也是不对的。线程,不是你想象的这样应用的。
:)
“因为你的每个计算都将耗损CPU的时间。他们的总量是定值。”
这个式没有错,不过用多线程我们也可以得到这个效果--开始执行第二个操作不用等到
第一个操作完成。 dojsp (月下秋风) 的想法没有错不过我不大明白两百次的循环,为什么每次都要做select se = new select();
se.select(200); 这个重复的操作?
明白大概意思就行了
修改一下
select se = new select();
for (int i=0;i<200;i++) //循环200次,
{
se.select(200); //耗CPU的是select类中的select方法
System.out.println(se.ve.elementAt(i));//输出一个结果
}
程序我贴出来了
http://expert.csdn.net/Expert/topic/1795/1795439.xml?temp=.3281061to takecare,我试过select方法本身就采用多线程,但是不知道为什么加入到Vector中的时候会出错。