因为线程的执行本身就是不确定的,加了synchronized关键字只能确保互斥访问这段代码以及变量的可见性,即某线程在修改共享变量(通过自己的工作内存来修改)时,其他的所有线程无法获得共享变量的信息。所以synchronized并不能保证程序的执行顺序。所以即使加了synchronized也可能会出现0。顺序是随机的,看jVM内存以及CUP的调度了。
2015-08-30
楼下的话差矣。。多线程执行,可以说是很“乱”的,和不是按照你代码写的顺序那样子执行的。。一旦所有线程调用了start()后,那么就会出现
“不可控”的局面。。。ps:强烈要求慕课提供回复功能。
“不可控”的局面。。。ps:强烈要求慕课提供回复功能。
2015-08-30
volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的。转自慕课问答,楼下有疑惑的亲们看一下吧~~~
说执行结果再解释的 我只能说你不懂线程 不懂别说话 线程基本知识都不懂。你来看这个看嘛。。中国教育不是让你小学都没读就直接去上大学的。去大学玩吗??估计你也不会玩
2015-08-06