亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

模式的秘密---單例模式

難度中級
時長30分
學習人數
綜合評分9.63
276人評價 查看評價
9.8 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
public class Sington1 {
private static volatile Sington1 sington1;

private Sington1() {
}

public static Sington1 getInsance() {

if (sington1 == null) {
synchronized (Sington1.class) {

if(sington1==null){
sington1 = new Sington1();
}

}
}
return sington1;
}

}
套路2字惟妙惟肖!如果說把編程比作是理發,那么設計模式就好比是寸頭、平頭、爆炸頭、蘑菇頭以及鍋蓋頭等等頭型!
java的套路來了
聽到各位小伙伴們,才發現是剛看完的struts攔截器老師...
一聽就是經驗深厚的老師了
這里講的線程不安全,主要是在判斷是否創建了這個實例的代碼塊里。樓上很多贊的那個,提到的方法叫雙重檢查鎖定。
問題根源是,instance = new Instance()可以分解成三行偽代碼。正常的順序是分配對象的內存空間->初始化對象->設置instance指向剛分配的內存地址。注意第2.3步會被重排序。這時候instance被分配了內存但是沒有初始化。如果這時候有一個線程B來訪問,他判斷instance!=null后調用這個對象時發現對象沒有初始化,就出現bug了~解決方案:1、Instance聲明為volatile類型。2、允許重排序,但是重排序不被其他線程看到。
太好了,慕課網就是強
講得不錯 ,淺顯易懂
。。。太淺了吧
講得很好,demo通俗易懂,棒棒的
老婆多了會出問題???大家覺得那???
講的好!有水平!
public class Singleton2 {

private Singleton2() {}

private static Singleton2 instance;

public static Singleton2 getInstance() {
if (instance == null) {
synchronized (Singleton2.class) {
if (instance == null) {
instance = new Singleton2();}}}
return instance;
}
}
餓漢模式:類加載的時候便進行了創建...
額...其實是因為static代碼塊的原因
一個類運行加載進入內存的時候 首先加載static靜態代碼塊
可以搜索一下“考查靜態語句塊、語句塊以及構造函數的執行順序”
弄懂了就知道餓漢模式了
BTW:上面搜索的東西是一道Java面試題
課程須知
本課程是 Java 開發課程的高級課程,如果您是新手,建議先移步 《Java入門第一季》和《Java入門第二季》
老師告訴你能學到什么?
1、 了解設計模式 2、 理解單例模式的含義及應用場合 3、 掌握單例模式中餓漢模式和懶漢模式的使用 4、 理解兩種模式的區別

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消