求一个JAVA多线程例子,最好有代码,谢谢啦!

比如我想计算1~1000的累加,单线程就是用一个for循环从1加到1000,现在我想用两个线程实现1~1000的累加,思想是:用线程1累加1~500。用线程2累加501~... 比如我想计算1~1000的累加,单线程就是用一个for循环从1加到1000,现在我想用两个线程实现1~1000的累加,思想是:用线程1累加1~500。用线程2累加501~1000。然后返回两个结果并相加得出正确结果。两个线程要同时运行,是同时运行,不是交替运行,如果是交替运行那跟单线程就没什么区别了。能否实现?如果可以实现,那么理论上多线程运行到得出结果所用的时间是不是单线程的一半?求各位大神解答,并附上代码,理论没有经过验证都是扯淡 展开
 我来答
10...6@qq.com
推荐于2016-10-31 · TA获得超过121个赞
知道答主
回答量:121
采纳率:0%
帮助的人:169万
展开全部
package a.b.test;
import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Calculate1000 implements Callable<Integer>{
public Calculate1000(){}

public Calculate1000(int a, int b){
this.a = a;
this.b = b;

}

int a;
int b;

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//同步
Calculate1000 ca1 = new Calculate1000();
Date ds1 = new Date();
int result = 0;
for(int i = 1 ; i <= 1000 ; i++){
result = ca1.add(i, result);
}
System.out.println(result);
System.out.println("同步用时" + (new Date().getTime() - ds1.getTime()) + "MS");

//异步
Date ds2 = new Date();
result = 0;
ExecutorService es = Executors.newFixedThreadPool(2);
Future<Integer> future1 = es.submit(new Calculate1000(1,500));
Future<Integer> future2 = es.submit(new Calculate1000(501,1000));
result = future1.get() + future2.get();
System.out.println(result);
System.out.println("异步用时" + (new Date().getTime() - ds2.getTime()) + "MS");
es.shutdown();
}
private int add(int a, int b) throws Exception{
Thread.sleep(10);
return a + b;
}
@Override
public Integer call() throws Exception {
int res = 0;
for(int i = a ; i <= b ; i++){
res = this.add(res, i);
}
return res;
}
}
楼主你试一下这段代码行不行,行的话请采纳!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式