多重加锁实现单例模式
2018-06-21 15:12:31 2 举报
多重加锁实现单例模式
作者其他创作
大纲/内容
虽然这里2和3重排序了,但是只要保证2排在4的前面执行,单线程内的执行结果就不会被改变
4:再次访问对象
2:初始化对象
线程A
1:分配对象的内存空间
线程A执行
判断instance是否为null
3:设置instance指向的内存空间
试图获取锁
Class对象的初始化锁
线程B
假设线程A获取到了锁,线程A将执行了InstaceHolder的初始化
instance = new Singleton()
即使2和3之间存在重排序,但线程B无法“看到”这个重排序
B线程初始访问对象
3:设置instance执行的内存空间
线程A
0 条评论
下一页