Yan*_*eve 6 java multithreading synchronization
最近我参加了一些关于一些设计模式的讲座:
显示以下代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
取自:双重检查锁定:取两个
我的问题与上面提到的模式无关,但是与synchronized块有关:
对于同步操作是否在同一个对象上进行的事实,在第1行和第3行中完成的双重同步是否有任何好处?
Tom*_*ine 11
在旧的Java内存模型(JMM)中,退出synchronized
块据称将本地数据刷新到主内存.输入synchronized
用于重新读取缓存数据的块.(此处,缓存包含具有相关编译器优化的寄存器.)旧JMM已损坏且未正确实现.
在新的JMM中它没有做任何事情.新JMM指定为1.5,并针对"Sun"1.4 JRE实现.1.5前一段时间完成了它的服务终止期限,所以你不必担心旧的JMM(好吧,也许Java ME会做一些不可预测的事情).
归档时间: |
|
查看次数: |
1873 次 |
最近记录: |