这个程序的目的是用双线程跑数据,得出结果输出。(只想输出1个值)当i等于10000时,单线程结果是13580.357929997872双线程结果是:(怎么输出了两个值,还跟单线程的结果不一样)当i等于100000000时,单线程结果是1.3579357998825678E8双线程结果是:(怎么输出了两个值,还跟单线程的结果不一样,而且这两个值还是两个不同的值)这结果太奇怪了。。。付源码package j120;public class j1200 implements Runnable { double a=1; long i; public void run() { while(i<100000000) { a+=1.357935793; i++; } System.out.println(a); }}package j120;public class j1201 { public static void main(String[] args) { j1200 a=new j1200(); new Thread(a).start(); new Thread(a).start(); // new Thread(a).start(); // new Thread(a).start(); }}
1 回答
已采纳
Developer_Zuck
TA贡献112条经验 获得超42个赞
你两次new的thread不是同一个对象,但这两个不同对象中的handle指向了同一个对象,所以前面的改变了a值时,后面取得的是对象本身内的值,也就是改变后的值
如果你想得到两个线程运行的解果一样,需要再次创建一个j1200对象,运行后,结果一致。
j1200 a = new j1200();
j1200 a2 = new j1200();
new Thread(a).start();
new Thread(a2).start();
添加回答
举报
0/150
提交
取消