解决方案 »
- 做JAVA图形界面遇到了问题,求救!!
- 有个简单题目不知道解决。帮帮忙。。我是初学者
- Jbuilder 2006运用
- 请问怎样将一个浮点数反序输出?
- 急!!求正则表达式,最常用的数据格式验证
- 请大家帮忙看看下面的代码,编译可以通过,运行时却有很多问题
- 怎样用ServerSocket实现: 服务器打开本地端口3434, 并监听,随时和发出请求的多个客户端简历连接?
- JComboBox如何实现在弹出下拉菜单之后,在下拉菜单上滚动鼠标滚轮从而滚动下拉菜单?
- 数据库乱码
- 请告知-JBuilder开发指南-Pdf书何处下载,广明网站的连接无效
- java通过socket通讯发送excel文件到c#端,excel文件乱码
- 不小心关机,java控制台成乱码了?怎么解决?
XX xx;
int start;
public Test3(XX xx,int start){
this.xx=xx;
this.start=start;
}
public void run(){
int num=0;
for(int i=start;i<start+500;i++){
num+=i;
}
if(this.start==0){
xx.setNum1(num);
xx.setFlag1(true);
}else if(this.start==500){
xx.setNum2(num);
xx.setFlag2(true);
}
if(xx.isFlag1()&&xx.isFlag2()){
System.out.println(xx.getNum1()+xx.getNum2());
}
}
public static void main(String[] args) {
XX xx=new XX();
new Test3(xx, 0).start();
new Test3(xx, 500).start();
}}class XX{
public int num1=0;
public int num2=0;
public boolean flag1=false;
public boolean flag2=false;
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public boolean isFlag1() {
return flag1;
}
public void setFlag1(boolean flag1) {
this.flag1 = flag1;
}
public boolean isFlag2() {
return flag2;
}
public void setFlag2(boolean flag2) {
this.flag2 = flag2;
}
}
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;
}
}