Java多線程下的單例模式參考
單例有多種的寫法,本例是懶漢式單例的一種寫法。在高并發(fā)環(huán)境下需要注意的是:
1.單例在并發(fā)訪問并調用其相應的getInstance方法的時候也會造成創(chuàng)建多個實例對象,加鎖是必要的。
2.使用synchronized是比較好的解決方案,優(yōu)點是代碼簡潔,缺點是在拋出異常的時候不能處理維護使系統(tǒng)處于良好狀態(tài)。
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 中文參考手冊》,也希望大家多多支持腳本之家。
相關文章
spring異步service中處理線程數(shù)限制詳解
這篇文章主要給大家介紹了關于spring異步service中處理線程數(shù)限制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-09-09
SpringBoot?Security權限控制自定義failureHandler實例
這篇文章主要為大家介紹了SpringBoot?Security權限控制自定義failureHandler實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
SpringBoot整合SpringTask實現(xiàn)定時任務的流程
這篇文章主要介紹了SpringBoot整合SpringTask實現(xiàn)定時任務的流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
idea新建Springboot項目,設置默認maven和jdk版本方式
這篇文章主要介紹了idea新建Springboot項目,設置默認maven和jdk版本方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

