Java多線程下的單例形式參考。本站提示廣大學習愛好者:(Java多線程下的單例形式參考)文章只能為提供參考,不一定能成為您想要的結果。以下是Java多線程下的單例形式參考正文
單例有多種的寫法,本例是懶漢式單例的一種寫法。在高並發情況下須要留意的是:
1.單例在並發拜訪並挪用其響應的getInstance辦法的時刻也會形成創立多個實例對象,加鎖是需要的。
2.應用synchronized是比擬好的處理計劃,長處是代碼簡練,缺陷是在拋出異常的時刻不克不及處置保護使體系處於優越狀況。
3.顯示的lock設定是優越的處理計劃。
應用lock的代碼以下:
package demo;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 參考應用
* @author Watson_Xu
* @date 2012-1-8 下晝04:31:09
*/
public final class SingletonContext {
private static SingletonContext sc = null;
private SingletonContext() {
}
private static Lock lock = new ReentrantLock();
public static SingletonContext getInstance() {
if(sc == null) {
lock.lock();
if(sc == null) {
try{
sc = new SingletonContext();
} finally {
lock.unlock();
}
}
}
return sc;
}
}
應用synchronized的時刻代碼以下:
package demo;
/**
* 參考應用
*
* @author Watson_Xu
* @date 2012-1-8 下晝04:31:09
*/
public final class SingletonContext {
private static SingletonContext sc = null;
private SingletonContext() {
}
public static synchronized SingletonContext getInstance() {
if(null == sc) {
sc = new SingletonContext();
}
return new SingletonContext();
}
}
檢查更多Java的語法,年夜家可以存眷:《Thinking in Java 中文手冊》、《JDK 1.7 參考手冊官方英文版》、《JDK 1.6 API java 中文參考手冊》、《JDK 1.5 API java 中文參考手冊》,也願望年夜家多多支撐。