在我們寫程序時,經常會用到單件模式,單件模式是一個類只擁有一個實例對象(或者擁有多個固定數量的實例對象)。下面我給出一個使用多線程的單件模式demo。
package com;
public class Single {
private static Single _instance = null;
private static Object lock = new Object();
//設置爲私有構造函數,封死外部調用構造函數新建實例
private Single()
{
}
public static Single get()
{
if ( _instance == null )
{
//設置同步鎖,以免多線程併發時,創建多個實例
synchronized (lock) {
if ( _instance == null )
{
return _instance = new Single();
}
}
}
return _instance;
}
}