3:他们两个都能修改同一个实例的x,y
5:Integer是类,只能修改指向不能修改值
7:i是局部变量,在inc.fermin(i);执行后i还是0,再执行i = i++;i被赋值为i++,因为i++仍是0,故i也为0
5:Integer是类,只能修改指向不能修改值
7:i是局部变量,在inc.fermin(i);执行后i还是0,再执行i = i++;i被赋值为i++,因为i++仍是0,故i也为0
调试欢乐多
Integer b = new Integer(6);
a = b; // 没有改变a的值,只是将a指向了b对象的地址.7.为什么输出0而不是1?int i =0;i = i++; // 注意这里是 i=i++ 而不是i++. i在运算之前是0,所以i=i++ = 0
能修改同一个实例的是否是因为实现runable接口的是同一个类,因为回调?但即使如此,就没有不同步的问题吗?2个以上的线程修改同一个变量肯定有不同步的问题,但我试了多次,显示到了5000多,x还是等于y?第7题仍不明白:
i=i++;i先赋值给i这是没有异议的,但请注意,i++相当于i=i+1,第二步i还是要自增的,而且会改变i的值,否则++就没有存在的意义了,这又作何解释?
第七题:执行i=i++;是先把i的值赋给i,然后在执行i+1(记住没有赋值给i);
你连sleep都不设置....
x++和y++的运算速度是非常快的,比for语句的切换快得多
而且你的线程并没有设置sleep,使得2个线程争抢优先级
越运行到后面,越有可能某个线程循环多次,而另一个线程等待
这个题目,你只需要在x++和y++中间插上Thread.sleep(x),x秒自己定50~100就可以有明显效果了
第7题:i++总是会把新值赋值给自己,难道放在赋值表达式里,就不给自己赋值了?
所以执行完i = i++, 后i 仍然是0
不解:用c语言环境运行了一下,输出是1啊,在我想可能是i在java中是个类的实例的缘故吧(深层次的问题)