多執行緒下的懶漢式單例模式
阿新 • • 發佈:2019-01-08
在多執行緒下實現懶漢式單例模式是不安全的,所謂的不安全,就是在同一時間段有兩個執行緒同時執行一段程式碼。解決方法包括將懶漢式改為餓漢式或者讓執行緒同步。下面程式碼實現執行緒的同步,保證多執行緒下的懶漢式單例是安全的。
public class LazyInstance { public static void main(String[] args) { Threadlazy t = new Threadlazy("no"); Threadlazy t1 = new Threadlazy("no1"); Threadlazy t2 = new Threadlazy("no2"); Threadlazy t3 = new Threadlazy("no3"); Threadlazy t4 = new Threadlazy("no4"); t.start(); t1.start(); t2.start(); t3.start(); t4.start(); } } class Threadlazy extends Thread { public Threadlazy(String name) { super(name); } @Override public void run() { System.out.println(Thread.currentThread().getName() + "建立的物件為" + Lazy.getInstance()); } } class Lazy { private static Lazy lazy = null; public static Lazy getInstance() { synchronized (Lazy.class) { if (lazy == null) { lazy = new Lazy(); } } return lazy; } }