class
bank
/** * 定義靜態變數,存放該物件。
*/private
static bank instance=
newbank()
;/**
* 返回物件的方法
*/public
static bank createinstance()
}
優點:
執行緒安全。
不足:物件載入時間過長。因為靜態物件是在類載入的時候進行載入,所以在占用記憶體的時間較長。
class
bank
/** * 定義靜態變數,存放該物件。
*/private
static bank instance=null;
/** * 返回物件的方法
*/public
static bank createinstance()
return instance;
}}
優點:
延遲物件的建立,需要該物件的時候,在進行載入,可以降低記憶體空間的浪費。
不足:延遲物件的建立,如果有多個執行緒,同時呼叫createinstance()方法,則會建立出多個單例物件。
class
bank
/** * 定義靜態變數,存放該物件。
*/private
static bank instance=null;
/** * 返回物件的方法
*/public
static bank createinstance()
return instance;}}
}
優點:
1、延遲物件的建立,不會過多的占用記憶體。
2、執行緒安全,因為針對createinstance()是單執行緒的。
不足:效率較低,因為建立好物件以後,該方法仍然相當於是單執行緒的。
class
bank
/** * 定義靜態變數,存放該物件。
*/private
static bank instance=null;
/** * 返回物件的方法
*/public
static bank createinstance()
}}return instance;
}}
這種方式相比較於懶漢同步鎖而言,它效率更高一些。
原因:因為第一次時,物件並沒有建立,所以需要單執行緒,來防止生成多個單執行緒物件,但是一旦物件例項化完成,該方法做單執行緒也沒有意義。所以**先進行判斷,檢視是否例項化,如果例項化完,就直接返回。
如果您還是看不懂,那麼請繼續看下面的例子。
例如:
剛出蘋果手機的時候,門店裡面就僅僅只有一台蘋果手機,所以此時,第乙個人從前門進去,買完手機,然後從後門出去,此時第二個人進來的時候,手機已經沒有了,第三個人進來的時候,也是如此。所以就考慮讓他們同時進來,從而提高效率
手把手教你寫Undo Redo程式
手把手教你寫 undo redo程式 undo redo 操作是很多具體編輯功能的軟體所不能缺少的。最典型兩種型別就是文字編輯和影象編輯軟體。然而它的實現在某種程度上來說也不是很簡單。我也廢話少說。要在程式中支援 undo redo 操作,就需要儲存一些必要的資訊,這個是眾所周知的。如果想支援無限級...
手把手教你寫Undo Redo程式
手把手教你寫undo redo程式 undo redo操作是很多具體編輯功能的軟體所不能缺少的。最典型兩種型別就是文字編輯和影象編輯軟體。然而它的實現在某種程度上來說也不是很簡單。我也廢話少說。要在程式中支援undo redo操作,就需要儲存一些必要的資訊,這個是眾所周知的。如果想支援無限級的und...
手把手教你寫ORM(三)
昨天處於暈死狀態,少寫了乙個元件,還需要乙個元件用來專門管理cache的,這裡說道為什麼要分這麼多元件,其實這是習慣問題,很多人喜歡寫乙個很大的dll,不過我比較喜歡拆分,小粒度的專案比較好管理和單獨測試,把用單元測試驗證好了的小組件湊起來除錯和寫成乙個巨大的dll慢慢一行行的追蹤 肯定是前者更加舒...