| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 738 人关注过本帖
标题:[求助]JAVA线程执行效率为什么与实际不同啊.(付代码)
只看楼主 加入收藏
beeblue
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-12-11
收藏
 问题点数:0 回复次数:5 
[求助]JAVA线程执行效率为什么与实际不同啊.(付代码)

import java.util.*;
import java.util.Date;

class jisuanshijian
{
private int allsum=0,no1sum=0,no2sum=0;
private Random r=new Random();
private int n=r.nextInt(90)+10;
private int a[]=new int[n];
public jisuanshijian()
{
System.out.println("n="+n);
for (int i=0 ;i<n ;i++ ) {
a[i]=r.nextInt(1000);
}
}

public void qiusum()//单线程求和
{
int sum=0;
for (int i=0 ;i<n ;i++ ) {
System.out.println("a["+i+"]="+a[i]);
sum=sum+a[i];
}
System.out.println("sum="+sum);
}

public void firstone()//线程1求上半部份和
{
for (int i=0 ;i<n/2 ;i++ ) {
//System.out.println("a["+i+"]*="+a[i]);
no1sum=no1sum+a[i];
}
System.out.println("no1sum*="+no1sum);
}

public void secondone()//线程2求下半部分和
{
for (int i=n/2 ;i<n ;i++ ) {
//System.out.println("a["+i+"]**="+a[i]);
no2sum=no2sum+a[i];
}
System.out.println("no2sum**="+no2sum);

}
public void lastone()//当两个线程都完成后执行
{
allsum=no1sum+no2sum;
System.out.println("allsum="+allsum);
}
}

class xiancheng1 extends Thread
{
jisuanshijian data;
boolean b1=false;
public xiancheng1(jisuanshijian d)
{
data=d;
b1=true;
}
public void run()
{
data.firstone();
}
}

class xiancheng2 extends Thread
{
jisuanshijian data;
boolean b2=false;
public xiancheng2(jisuanshijian d)
{
data=d;
}
public void run()
{
data.secondone();
b2=true;
}
}

public class xiti84
{

public static void main(String[] args)
{
jisuanshijian cool=new jisuanshijian();
Date d1=new Date();
cool.qiusum();
Date d2=new Date();
long d=d2.getTime()-d1.getTime();
System.out.println("单线程:"+d+"Millisecond");
Date t1=new Date();
xiancheng1 bee=new xiancheng1(cool);
xiancheng2 nana=new xiancheng2(cool);
bee.start();
nana.start();
while (true) {
if (bee.b1 && nana.b2)
{
cool.lastone();
break;
}
}
Date t2=new Date();
long t=t2.getTime()-t1.getTime();
System.out.println("多线程使用时间"+t+"Millisecond");
}
}
代码有问题吗.请看看,测试和修改.

搜索更多相关主题的帖子: JAVA 付代码 线程 int 效率 
2006-12-11 17:35
beeblue
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-12-11
收藏
得分:0 
我测试过.单线程比多线程快了多10倍啊.还有就是时间一定准吗.
2006-12-11 17:36
一二三四五
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:856
专家分:0
注 册:2006-11-13
收藏
得分:0 

CPU只有一个,单线程不用切换CPU时间,而多线程要切换


hey,di va la
2006-12-11 17:44
beeblue
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-12-11
收藏
得分:0 
感觉不是这样吧.那程序有问题吗.理论上多线程要快的啊
2006-12-11 18:51
一二三四五
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:856
专家分:0
注 册:2006-11-13
收藏
得分:0 

如果是一件事情,多线程不如一个线程快
因为多线程要切换CPU时间


hey,di va la
2006-12-11 19:01
beeblue
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-12-11
收藏
得分:0 

谢谢拉.估计就是这样拉

2006-12-11 20:55
快速回复:[求助]JAVA线程执行效率为什么与实际不同啊.(付代码)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018054 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved