java – 与外部同步在同一对象上的内部同步
发布时间:2020-05-24 16:54:30 所属栏目:Java 来源:互联网
导读:最近我参加了一些关于一些设计模式的讲座: 显示以下代码: public static Singleton getInstance(){ if (instance == null) { synchronized(Singleton.class) { //1 Singleton inst = instance; //2 if (ins
|
最近我参加了一些关于一些设计模式的讲座: 显示以下代码: 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会做一些不可预测的事情). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
