单例模式,最常见的就是饥饿模式和懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象。在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保证了线程安全。
dubble check instance
static inner class
静态内部类static inner class
public class InnerSingleton { private static class Singletion { private static Singletion single = new Singletion(); } public static Singletion getInstance() { return Singletion.single; } }
双重判断:dubble check instance
public class DubbleSingleton { private static DubbleSingleton ds; public static DubbleSingleton getDs() { if (null == ds) { try { Thread.sleep(3000); // 模拟初始化对象的准备时间 } catch (Exception e) { e.printStackTrace(); } synchronized (DubbleSingleton.class) { if (null == ds) { ds = new DubbleSingleton(); } } } return ds; } }
时间: 2024-10-14 03:06:16