public class Singleton { private static EagerSingleton instance = new EagerSingleton(); private Singleton() { //私有构造函数 } public static EagerSingleton getInstance() { return instance; } }b. 懒汉式
public class SingletonClass{ private static SingletonClass instance=null; private SingletonClass(){} public static SingletonClass getInstance(){ if(instance==null){ instance=new SingletonClass(); } } return instance; } }// 懒汉式---不存在线程安全问题------效率比较低
public class SingletonClass{ private static SingletonClass instance=null; private SingletonClass(){} public static synchronized SingletonClass getInstance(){ if(instance==null){ instance=new SingletonClass(); } } return instance; } }// 懒汉式---不存在线程安全问题-----效率高
public class SingletonClass{ private static SingletonClass instance=null; private SingletonClass(){} public static SingletonClass getInstance(){ if(instance==null){ synchronized(SingletonClass.class){ if(instance==null){ instance=new SingletonClass(); } } } return instance; } }说明:synchronized方法与synchronized代码快的区别
7. 线程安全与CPU核数有关吗? java
无关,只是在单核状况下,有些问题复现几率更低。 web