Java多線程下的單例模式參考
單例有多種的寫法,本例是懶漢式單例的一種寫法。在高并發(fā)環(huán)境下需要注意的是:
1.單例在并發(fā)訪問并調(diào)用其相應(yīng)的getInstance方法的時(shí)候也會(huì)造成創(chuàng)建多個(gè)實(shí)例對(duì)象,加鎖是必要的。
2.使用synchronized是比較好的解決方案,優(yōu)點(diǎn)是代碼簡(jiǎn)潔,缺點(diǎn)是在拋出異常的時(shí)候不能處理維護(hù)使系統(tǒng)處于良好狀態(tài)。
3.顯示的lock設(shè)定是良好的解決方案。
使用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的時(shí)候代碼如下:
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的語法,大家可以關(guān)注:《Thinking in Java 中文手冊(cè)》、《JDK 1.7 參考手冊(cè)官方英文版》、《JDK 1.6 API java 中文參考手冊(cè)》、《JDK 1.5 API java 中文參考手冊(cè)》,也希望大家多多支持腳本之家。
相關(guān)文章
spring異步service中處理線程數(shù)限制詳解
這篇文章主要給大家介紹了關(guān)于spring異步service中處理線程數(shù)限制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09SpringBoot?Security權(quán)限控制自定義failureHandler實(shí)例
這篇文章主要為大家介紹了SpringBoot?Security權(quán)限控制自定義failureHandler實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11SpringBoot整合SpringTask實(shí)現(xiàn)定時(shí)任務(wù)的流程
這篇文章主要介紹了SpringBoot整合SpringTask實(shí)現(xiàn)定時(shí)任務(wù)的流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06springboot訪問請(qǐng)求404的原因及解決辦法
在使用Spring Boot開發(fā)應(yīng)用程序時(shí),有時(shí)可能會(huì)遇到訪問請(qǐng)求出現(xiàn)404錯(cuò)誤的情況,即請(qǐng)求的資源未找到,這篇文章主要給大家介紹了關(guān)于springboot訪問請(qǐng)求404的原因及解決辦法,需要的朋友可以參考下2023-09-09Spring中的事務(wù)控制知識(shí)總結(jié)
我們講了轉(zhuǎn)賬方法存在著事務(wù)問題,當(dāng)在業(yè)務(wù)層方法更新轉(zhuǎn)入賬戶時(shí)發(fā)現(xiàn)異常,更新收款方賬戶則會(huì)出錯(cuò).當(dāng)時(shí)是通過自定義事務(wù)管理器進(jìn)行整體事務(wù)的處理.其實(shí)Spring 提供了業(yè)務(wù)層的事務(wù)處理解決方案,并且 Spring 的事務(wù)控制都是基于 AOP 的,需要的朋友可以參考下2021-06-06idea新建Springboot項(xiàng)目,設(shè)置默認(rèn)maven和jdk版本方式
這篇文章主要介紹了idea新建Springboot項(xiàng)目,設(shè)置默認(rèn)maven和jdk版本方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12