class A{ private static volatil A a; private A(){} public A getInstance(){ if(a==null){ synchronized(A.class){ if(a==null) a=new A(); } } return a; }
a=new A();这条语句,他需要:开辟空间,初始化空间,指针指向空间,。 可能一个线程new,另一个线程此时因为重排序,指针不为null但是空间没有初始化。 所以给a加volatile,保证不会重排序。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 单例模式java
微信公众账号
微信扫一扫加关注
发表评论 取消回复