一个线程中变量的修改可能不会立即对其他线程可见,事实上也许永远不可见。在代码一中,如果一个线程调用了MyClass.loop(),将来的某个时间点,另一个线程调用了MyClass.setValue(100),第一个线程可能仍然不会终止,可能永远循环下去代码一:public cla ...
一个线程中变量的修改可能不会立即对其他线程可见,事实上也许永远不可见。
在代码一中,如果一个线程调用了MyClass.loop(),将来的某个时间点,另一个线程调用了MyClass.setValue(100),第一个线程可能仍然不会终止,可能永远循环下去
代码一:public class MyClass{ private static final String TAG="MyClass"; private static int mValue=0; public static void setValue(int n){ mValue=n; } public static void loop(){ int value; while(value!=100){ try{ Log.i(TAG,"Value is "+value); Thread.sleep(1000); }catch(Exception e){ } } }}
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:JAVA的内存模型(变量的同步)
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。