public class MutilSingleton{private static Integer maxNum = 2;//指定固定數(shù)量private static ArrayList<MutilSingleton> list = new ArrayList();//容納所有的MutilSingleton對象static{ //初始化list集合for(int i=0; i<maxNum; i++){list.add(new MutilSingleton());}}private MutilSingleton(){}public static MutilSingleton getInstance(){//獲取隨意一個MutilSingleton實例Random ran = new Random();Integer index = ran.nextInt(maxNum);return list.get(index);}public void doSomething(){//邏輯處理}}同樣地:該實例在并發(fā)情況下會出現(xiàn)線程不安全的問題,解決方法依然是在獲取MutilSingleton實例的方法上添加synchronized關(guān)鍵字。
4.工廠模式下的單例模式
// 單例類public class Singleton{private Singleton(){}}//工廠類public class SingletonFacotry{private static Singleton singleton;static{//在類加載的時候初始化單例類,只會被加載一次。try{Class cls = Class.forName(singleton.getClass().getName()); //獲得單例類的類加載器Constructor con = cls.getDeclaredConstructor();con.setAccessible(true);singleton = (Singleton) con.newInstance();}catch(Exception e){e.printStackTrace();}}public Singleton getInstance(){//給外部提供獲取單例類的方法return singleton;}}