多執行緒 多執行緒 單例設計模式

2021-08-27 20:09:04 字數 1399 閱讀 9450

多執行緒之 單例設計模式

餓漢式 多執行緒安全**:

**1:

/**

* 餓漢式

* */

class single

static single getinstance()

public void show()

}class a implements runnable

}class test

catch (interruptedexception ex) {};

c.start();

try catch (interruptedexception ex) {};

e.start();

try catch (interruptedexception ex) {};

f.start();

}}

執行結果:

[img]

多執行緒安全性:多執行緒安全

分析:這種靜態初始化的方法是自己被載入時就自己例項化,被形象的稱之為餓漢式單例類。而原先的單例模式處理方式要在第一次被引用的時候才會被例項化,就被稱為懶漢式單例類。

優缺點:這樣導致類載入慢,但執行快。

不安全懶漢式示例:

**2:

class single 

public static single getinstance()

public void show()

}class a implements runnable

}class test

}

執行結果:

[img]

懶漢式多執行緒安全單例類:

**3:

/**

* 多執行緒安全 懶漢式

* */

class single

public static single getinstance()

}return s;

}public void show()

}class a implements runnable

}class test

}

執行結果:

[img]

分析:使用了同步**塊,這樣每個執行緒都必須等,當前執行的執行緒完成操作後才能進去,達到多執行緒安全程式設計;可這樣也是程式執行效率下降;在同步**塊外在判斷一次是否為null,這樣程式的執行效率就就會好點了。

同步鎖:靜態的同步方法,使用的鎖是該方法所在類的位元組碼檔案物件,類名.class。

優缺點:載入類快,物件例項延遲載入,第一次執行較慢,還是很不錯的。

這個測試有點麻煩,測試好多次才能看到問題,建議大家可以結合使用 執行緒的sleep()方法來測試,見效快。

多執行緒 單例模式與多執行緒

一 前言 如何使單例模式遇到多執行緒是安全的 正確的?我們在學習設計模式的時候知道單例模式有懶漢式和餓漢式之分。簡單來說,餓漢式就是在使用類的時候已經將物件建立完畢,懶漢式就是在真正呼叫的時候進行例項化操作。二 餓漢式 多執行緒 public class myobject public static...

多執行緒 單例模式

單例模式 是非常典型常用的一種設計模式 乙份資源只能被申 載一次 單例模式的方法建立的類在當前程序中只有乙個例項 資源的程式初始化的時候就去載入,後面使用的時候直接使用,使用的時候比較流暢,有可能會載入用不上的資源,導致程式初始化時間比較慢。include class single instance...

單例模式多執行緒

單例模式 確保某個類只有乙個例項化物件 import time class a from threading import lock instance none lock lock def new cls,args,kwargs 加鎖確保時間片不發生輪轉 with cls.lock ifnot cl...