1. 程式人生 > >多執行緒下的懶漢式單例模式

多執行緒下的懶漢式單例模式

       在多執行緒下實現懶漢式單例模式是不安全的,所謂的不安全,就是在同一時間段有兩個執行緒同時執行一段程式碼。解決方法包括將懶漢式改為餓漢式或者讓執行緒同步。下面程式碼實現執行緒的同步,保證多執行緒下的懶漢式單例是安全的。

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;
	}
}