五、单件模式
經(jīng)典單件
public class Singleton {private static Singleton uniqueInstance;private Singleton() {}public static Singleton getInstance() {if (uniqueInstance == null) {uniqueInstance = new Singleton();}return uniqueInstance;} }線程安全的單件
- 直接生成單件對(duì)象
- 使用synchronized
- 雙重檢查加鎖
個(gè)人理解
單件模式確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)。
在經(jīng)典的單件模式中,如果有兩個(gè)線程訪問(wèn)一個(gè)單件模式,會(huì)發(fā)生線程安全的問(wèn)題,產(chǎn)生兩個(gè)單件實(shí)例。
解決方法:
1、在單件中直接生成單件對(duì)象,然后返回。(如果單件對(duì)象創(chuàng)建的開(kāi)銷比較大,會(huì)造成資源浪費(fèi))
2、在單件的全局訪問(wèn)點(diǎn)上使用synchronized 關(guān)鍵字,可以解決問(wèn)題。(線程同步會(huì)降低性能)
3、使用雙重檢查加鎖的方式,完美的解決問(wèn)題。
轉(zhuǎn)載于:https://www.cnblogs.com/huacesun/p/6622496.html
總結(jié)
- 上一篇: docker基础用法
- 下一篇: [LeetCode] Find Larg