类一:
public class MultiThread extends Thread{
private String[] str = null; public MultiThread(){}
public MultiThread(String[] str){
this.str = str;
} public void run(){
for(int i=0;i<str.length;i++){
System.out.println(i+ "\t" + str[i]);
}
} public static void main(String[] args){
String[] str = new String[100000];

for(int i=0;i<100;i++){
new MultiThread(new String[1000]).start();
}
}
}
类二:
public class MultiThread extends Thread{
private String[] str = null; public MultiThread(){}
public MultiThread(String[] str){
this.str = str;
} public void run(){
for(int i=0;i<str.length;i++){
System.out.println(i+ "\t" + str[i]);
}
} public static void main(String[] args){
String[] str = new String[100000]; new MultiThread(new String[100000]).start();
}
}上面两个类分别耗时:22、18秒
怎么线程开的越多,耗时越大?
是我的程序写的有问题吗?
请指教

解决方案 »

  1.   

    用多线程速度比单线程还慢? 
    当然是这样,除非你的CPU是双核的,一个CPU同时干几件事,要在几件事情中切换,切换需要时间,当然比干一件要慢
     但是双核就不同了,有2个CPU干事,多线比单线快,因为单线的话,另一个CPU闲置了
      

  2.   

    to:lixiaoxue85(蛮野蛮)
    记得说是线程多了,获取cpu单元也就多,这样该程序执行的机会多了,速度就快了,不是这样吗?
      

  3.   

    又试了一下for(int i=0;i<1000;i++){
    new MultiThread(new String[100]).start();
    }
    共用15秒
    竟然又少了?
      

  4.   

    to wxgz(无香瓜子) ( ) 信誉:100    
    那你这是在抢资源啊.当CPU使用者数量不变的情况下
      

  5.   

    晕:
    for(int i=0;i<10000;i++){
    new MultiThread(new String[10]).start();
    }
    18秒?
    一点规律都没了?????????????
      

  6.   

    to:lixiaoxue85(蛮野蛮) 
    是啊,cpu不可能只是单用户操作的,服务器肯定有很多用户访问