java – 与外部同步在同一对象上的内部同步
发布时间:2020-12-15 00:08:06 所属栏目:Java 来源:网络整理
导读:最近我参加了一些关于一些设计模式的讲座: 显示以下代码: public static Singleton getInstance(){ if (instance == null) { synchronized(Singleton.class) { //1 Singleton inst = instance; //2 if (inst == null) { synchronized(Singleton.class) { /
最近我参加了一些关于一些设计模式的讲座:
显示以下代码: public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class) { //1 Singleton inst = instance; //2 if (inst == null) { synchronized(Singleton.class) { //3 inst = new Singleton(); //4 } instance = inst; //5 } } } return instance; } 取自:Double-checked locking: Take two 我的问题与上面提到的模式无关,但是与synchronized块有关: 在第1行和第1行中完成的双重同步是否有任何好处? 3关于同步操作是否在同一个对象上完成的事实? 解决方法
在旧的Java内存模型(JMM)中,退出同步块据称将本地数据刷新到主内存.输入用于重新读取缓存数据的同步块. (此处,缓存包含具有相关编译器优化的寄存器.)旧JMM已损坏且未正确实现.
在新的JMM中它没有做任何事情.新JMM指定为1.5,并针对“Sun”1.4 JRE实现. 1.5前一段时间完成了它的服务终止期限,所以你不必担心旧的JMM(好吧,也许Java ME会做一些不可预测的事情). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |