單例應該這麼寫

2021-08-16 14:09:05 字數 758 閱讀 1125

public class doublechecksingleton 

public static doublechecksingleton getinstance() }}

return instance;

}}

q1. instance為什麼要宣告為static?

a1. static方法只能訪問static屬性,因為非static屬性是為例項而存在的,而呼叫static方法不需要例項存在,所以instance必須宣告為static。

q2. getinstance方法裡可以不加同步嗎?

a2. 不可以,必須加,因為很明顯存在多執行緒問題

q3. 兩次判斷instance==null是必要的嗎?

a3. 是非常必要的,我們在很多框架如spring中也常看到這樣的寫法。因為同步是有效能降低代價的,所以同步前需判斷null,這個不是必須,但很必要,同步塊裡的則是必須的判斷了。

q4. instance為何宣告為volatile?

a4. 執行緒能夠自動發現volatile變數的最新值,且instance的值只有非常確定的兩種情況,即null和單例項,所以instance宣告為volatile,才能以最新的值判斷instance==null,這是必須的。關於volatile與記憶體模型的解釋,請看 ,

q5. 在呼叫方法時才new instance,這叫什麼模式?

a5. 懶漢模式,或可稱為懶載入模式。

其實,單例還有一些深藏不漏的地方 -> 單例與序列化和反射

應該這麼寫嗎?

應該這麼寫嗎?delphi windows sdk api 我想獲得表weixuclchild.tmoney和weixuwxchild.tmoney中的sum值 select sum weixuclchild.tmoney sum weixuwxchild.tmoney from weixuclch...

應該這麼寫嗎?

應該這麼寫嗎?delphi windows sdk api 我想獲得表weixuclchild.tmoney和weixuwxchild.tmoney中的sum值 select sum weixuclchild.tmoney sum weixuwxchild.tmoney from weixuclch...

簡歷應該這麼寫

工作至今看了很多的簡歷,發現不少求職者的簡歷抓不住重點。簡歷中什麼最重要?hr最關心什麼問題?獵頭聯合網認為應注重以下幾點 1.量體裁衣 2.內容突出 內容是一切,簡歷一定要突出你的經驗 能力以及過去的成就。你需要用證據來說明你的實力。記住要證明你以前的成就以及你的前雇主得到了什麼益處,包括你為他節...