多執行緒之 單例設計模式
餓漢式 多執行緒安全**:
**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...