Java中的懒汉模式和饿汉模式是两种常用的单例设计模式,用于保证一个类在整个应用程序中只有一个实例对象。下面我们来看看这两种模式的实现。
//懒汉模式(线程不安全) public class SingletonLazy { private static SingletonLazy instance; private SingletonLazy(){} public static SingletonLazy getInstance(){ if(instance == null){ instance = new SingletonLazy(); } return instance; } } //饿汉模式(线程安全) public class SingletonHungry { private static final SingletonHungry instance = new SingletonHungry(); private SingletonHungry(){} public static SingletonHungry getInstance(){ return instance; } }
在以上代码中,懒汉模式是在第一次调用getInstance()方法时创建实例对象,而饿汉模式则是在类加载时就创建实例对象。
需要注意的是,懒汉模式在多线程下可能会出现线程安全问题,可以通过加锁解决,但会降低效率。而饿汉模式的实例对象一旦创建就不会发生变化,因此是线程安全的。
总的来说,懒汉模式适用于单线程环境下,或是对于get()方法并不频繁使用的情况。而饿汉模式适用于多线程环境下,或是对于get()方法频繁使用的情况。