单例模式,只有单个实例的意思。一般用于只需要有一个实例存在的时候,防止new好多个对象,保证在内存中只有一个实例存在。

饿汉式单例

  1. 类加载到内存后,就实例化一个单例,JVM保证线程安全
  2. 唯一缺点:不管用到与否,类装载时就完成实例化
  3. public class Singleton {
  4. private static Singleton singleton = new Singleton();
  5. //防止new对象
  6. private Singleton(){}
  7. public static Singleton getInstance(){
  8. return singleton;
  9. }
  10. public static void main(String[] args) {
  11. Singleton singleton1 = Singleton.getInstance();
  12. }
  13. }

懒汉式单例

  1. 需要时,才new对象。但多线程访问时会出现问题。
  2. public class Singleton {
  3. private static Singleton singleton;
  4. //防止new对象
  5. private Singleton(){}
  6. public static Singleton getInstance(){
  7. if(singleton == null){
  8. singleton = new Singleton();
  9. }
  10. return singleton;
  11. }
  12. public static void main(String[] args) {
  13. Singleton.getInstance();
  14. }
  15. }