單例模式是一種比較簡單的模式,確保某乙個類在記憶體中只有乙個例項,而且自行例項化並向整個系統提供這個例項,也就是說在這個系統中這個類只能例項化乙個物件。比如web頁面的計數器。
執行緒安全的單例模式
/*
這是先初始化物件,稱為餓漢式
single類一進記憶體,就已經生成物件
執行緒安全的
*/class single
public static single getinstance()
public void dosomething()
}
執行緒不安全的單例模式
/*
這是延遲載入物件,稱為懶漢式
single類進記憶體,物件還沒有存在,只是呼叫getinstance()方法時候才建立物件。
執行緒不安全的
*/class single
public static single getinstance()
return single;
} public void dosomething()
}
使用synchronized關鍵字使得執行緒安全,這樣寫會使得程式的執行效率變低,因為每一次獲取例項時候都會判斷是否有鎖然後加鎖~
class single
//synchronized關鍵字用於執行緒同步,加鎖
public static single synchronized getinstance()
return single;
} public void dosomething()
}
使用兩次判斷,避免每次getinstance()方法加鎖,所消耗的資源。
class single
//synchronized關鍵字用於執行緒同步
public static single getinstance()}}
return single;
}public void dosomething()
}
執行緒安全的單例模式
廢話不多說,常用的 積澱下來。一 懶漢模式 即第一次呼叫該類例項的時候才產生乙個新的該類例項,並在以後僅返回此例項。需要用鎖,來保證其執行緒安全性 原因 多個執行緒可能進入判斷是否已經存在例項的if語句,從而non thread safety.使用double check來保證thread safe...
執行緒安全的單例模式
單例模式是為了保證乙個類只有乙個例項而且易於外界訪問。所以一般只有把建構函式,拷貝函式,析構函式,賦值函式,變數名變為私有。再用乙個get函式訪問提供介面即可。考慮執行緒安全就要加鎖。一 懶漢模式 1 靜態成員例項的懶漢模式 class singleton public static singlet...
執行緒安全的單例模式
在我們專案中,很多時候需要程式只存在乙個唯一例項。通常在專案中我會把單例模式寫成如下形式 public class singleton public static singleton getinstance return msingleton 通常以這種形式返回乙個類的唯一例項,然而在android...