當需要網路載入之後進行一些操作,這時若有多個同時請求可能會出現擁堵現象,所以我們希望他們是乙個乙個來請求,那我們要怎麼實現讓他們乙個乙個請求呢,這時就需要網路請求採用單例的形式。
1)將網路請求類的構造方法設定為private
2)在類中定義乙個private static的自己的例項
3)提供乙個public static的getinstance()方法,將非空的例項返回
這樣當別人需要用到我這個網路請求類的時候,通過類名.getinstance()就可以獲得我的例項,並且因為getinstance()和例項都是static的,因此全域性共用乙個網路請求例項,這樣會保證同一時刻只有乙個進行網路請求,避免了網路擁堵。
對於例項和getinstance()的不同方式我們分為懶漢式和惡漢式
(1)懶漢式
public class lazysingleinstance
//thread not safe
public static lazysingleinstance getlazy1()
//thread safe
public static lazysingleinstance getlazy2()
return lazy;
}}
懶漢式有兩種形式,若要用懶漢式一般都採用第二種執行緒同步的形式,因為第一種形式若兩個執行緒同時進入請求,當第乙個執行緒進去還沒new完時,若第二個又進去再new一次,這樣就達不到單例的效果了。
(2)惡漢式
public class eagersingleinstance
public static eagersingleinstance geteager()
}
惡漢式與懶漢式唯一的區別就在於new物件的位置不同,因為惡漢式形式簡單,所以單例一般採用惡漢式。 java單例模式的實現
單例在很多地方都用的到,例如購物車之類的,我現在就把單例實現類寫一下供大家交流 我把類的初始話順序說一下,大家就能很快理解了 單個類 1.靜態變數2.靜態初始化塊3.變數4.初始化塊5.構造器 繼承類 1.父類 靜態變數2.父類 靜態初始化塊 3.子類 靜態變數4.子類 靜態初始化塊 5.父類 變數...
Java單例模式的實現
所謂類的單例設計模式,就是採取一定的方法保證在整個的軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法。如果我們要讓類在乙個虛擬機器中只能產生乙個物件,我們首先必須將類的構造方法的訪問許可權設定為private,這樣,就不能用new操作符在類的外部產生類的物件了,但在類...
java實現單例模式
1.餓漢式 public class singletonclass private singletonclass 這種方式基於 classloder 機制避免了多執行緒的同步問題,不過,instance 在類裝載時就例項化,雖然導致類裝載的原因有很多種,在單例模式中大多數都是呼叫 getinstan...