在java中是以下Thead Safe?信號量能否安全使用雙重鎖定成語?
public class TestDCL{
private static final Semaphore lock = new Semaphore(1);
private Object instance;
public Object m(){
if(instance == null){
lock.acquire();
if(instance == null){
instance = new Object();
}
lock.release();
}
return instance;
}
}
「volatile」解決方案僅適用於J2SE5及更高版本。最可移植的(即跨幾個JVM版本)解決方案仍然使用靜態類來完成初始化。 – 2010-11-03 05:47:34