單例,包括懶漢式執行緒安全

2021-08-30 21:31:14 字數 3505 閱讀 7504

package danli;

public class test1

}class singleinstance

private static singleinstance single=null;

public static singleinstance getinstance()

}} return single; }}

class singletest implements runnable }

}

輸出:

thread-1  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-0  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

thread-1  danli.singleinstance@2f1eeb2f

普通的懶漢式單例:

package day12;

/* * 設計模式:將前人總結好的經驗我們直接拿來使用.

* 一共有23種,常用的有單例設計模式,模板設計模式,工廠設計模式,裝飾設計模式,介面卡設計模式,**設計模式.

* * 分析:

* 1.使用者只允許有乙個物件

* 2.單例類

* 3.全域性的訪問點:得到的唯一的物件就是全域性的訪問點,怎麼做到全域性?---static

* 4.提供出去?

* * 單例類的作用:1.可以實現兩個物件之間的傳值

* 2.可以在全域性範圍內呼叫很多的功能.

* 好處:可以讓兩個物件在完全沒有關係的前提下,實現值的傳遞,降低了耦合性,提高了內聚性

* * 耦合性,內聚性在微觀上說:描述的是類與類之間的關係

* 好處:我們應該盡量提高內聚性,減少耦合性,可以提高程式的健壯性,增加**的可移植性,方便實現模組兒化程式設計

* * 如何做到低耦合高內聚?

* 在處理類與類關係的時候,讓類之間的關係越緊密耦合性越高,內聚性越低.反之,關係越鬆散耦合性越低,內聚性越高.

*///單例類

//餓漢式:在定義變數的同時完成賦值

class singleinstance

//第三步:建立乙個靜態的公共的方法,將單例類物件提供出去

public static singleinstance getinstance()

//功能區---一般建立的是非靜態的成員實現功能

//建立成員變數

//建立成員方法

}//單例類

//懶漢式:開始只是定義變數,什麼時候使用,什麼時候賦值

class singleinstance1

//第三步:建立乙個靜態的公共的方法,將單例類物件提供出去

public static singleinstance1 getinstance()

return singleinstance; }

//功能區---一般建立的是非靜態的成員實現功能

//建立成員變數

//建立成員方法

int num;

}//例項:有兩個類a,b.要求將a中的值傳到b類中

class a1

}class b1

//通過單例傳值

public void danlitest2()

}public class demo6

}

執行緒安全的懶漢式單例設計模式

首先回顧一下單利設計模式 單利設計模式是通過某種方式使某個類只能建立乙個物件例項供外界使用。單利設計模式分為懶漢式和餓漢式 餓漢式是執行緒安全的 1 餓漢式單利設計模式 2class single 5public static single getinstance 8 餓漢式實現執行緒安全,可以通過...

單例模式之懶漢式 》執行緒安全問題

package com.zzfl.pm1 zzfl 2019 8 11 public class singleton volatile 不穩定的,易揮發的。private static volatile singleton instance public static singleton getin...

單例(懶漢式單例 餓漢式單例)

public class singleton private static singleton instance new singleton public static singleton getinstance public class singleton public static synchr...