Tag: 单例

延迟加载的单例:双重检查锁定与按需持有者惯用语初始化

我需要在并发环境中延迟加载资源。 加载资源的代码只能执行一次。 双重检查锁定 (使用JRE 5+和volatile关键字)和初始化按需持有者习惯似乎很适合这项工作。 仅仅通过查看代码,按需初始化持有者习惯看起来更干净,更有效(但是,嘿,我在这里猜测)。 不过,我必须小心并记录我的每一个单身人士的模式。 至少对我而言,很难理解为什么代码是这样编写的…… 我的问题是:哪种方法更好? 为什么? 如果你的答案是否定的。 您将如何在Java SE环境中解决此要求? 备择方案 我可以使用CDI而不强加它在整个项目中的使用吗? 那里有文章吗?

java中的单例模式。 懒惰的初始化

public static MySingleton getInstance() { if (_instance==null) { synchronized (MySingleton.class) { _instance = new MySingleton(); } } return _instance; } 1.上面的getInstance方法实现有缺陷吗? 2.这两种实现有什么区别。 public static synchronized MySingleton getInstance() { if (_instance==null) { _instance = new MySingleton(); } return _instance; } 我已经在stackoverflow中看到了很多关于单例模式的答案,但我发布的问题主要是知道在这种特殊情况下方法和块级别的’synchronize’的区别。

采访问题:关于Java序列化和单例

在采访中,面试官问我以下问题:是否可以序列化单个对象? 我说是的,但在哪种情况下我们应该序列化一个单身人士? 是否可以设计一个无法序列化对象的类?

如何以适当的方式编写单身人士?

今天在我的采访中,一位采访者让我写了一个Singleton课程。 我给出了答案 public class Singleton { private static Singleton ref; private Singleton() { } public static Singleton getInstance() { if (ref == null) { ref = new Singleton(); } return ref; } } 突然他告诉我这是写作课的老方法。 任何人都可以帮助我,为什么他这样说。

如何从枚举构造函数中抛出exception?

如何从枚举构造函数中抛出exception? 例如: public enum RLoader { INSTANCE; private RLoader() throws IOException { …. } } 产生错误 未处理的exception类型IOException

单例类和静态类之间的区别?

可能重复: 静态类和单例模式之间的区别? Java中的Singleton模式和静态类有什么区别? 我不明白得到单例类和静态类有什么区别? 任何人都可以举例说明吗?

Java:懒惰初始化单例

创建单身人士的模式似乎是这样的: public class Singleton { private static final Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance() { return instance; } } 但是我的问题是,如果Singleton构造函数执行不是unit testing友好的事情,例如调用外部服务,jndi查找等,你如何使用这样的类。 我想我可以重构它: public class Singleton { private static Singleton instance; private Singleton(){ } public synchronized static Singleton getInstance() { if(instance == null) instance = new Singleton(); return instance; } […]

有效的Java项目#77 – 单例对象的序列化 – 为什么我必须使用readResolve?

有效的Java #77声明我们必须使用readResolve在序列化期间保留Singleton保证。 他们使用了这个例子。 public class Elvis implements Serializable{ public static final Elvis INSTANCE = new Elvis(); private Elvis() { … } public void leaveTheBuilding() { … } 他们建议使用 如果Elvis类用于实现Serializable,则以下readResolve方法足以保证singleton属性: // readResolve for instance control – you can do better! private Object readResolve() { // Return the one true Elvis and let the garbage collector // […]

单例模式:使用枚举版本

我不明白如何实现Singleton模式的Enum版本。 下面是使用Singleton模式实现“传统”方法的示例。 我想将其更改为使用Enum版本,但我不确定如何。 public class WirelessSensorFactory implements ISensorFactory{ private static WirelessSensorFactory wirelessSensorFactory; //Private Const private WirelessSensorFactory(){ System.out.println(“WIRELESS SENSOR FACTORY”); } public static WirelessSensorFactory getWirelessFactory(){ if(wirelessSensorFactory==null){ wirelessSensorFactory= new WirelessSensorFactory(); } return wirelessSensorFactory; } }

垃圾收集器何时擦除使用Singleton模式的对象的实例?

垃圾收集器何时擦除使用Singleton模式的对象的实例? 对象是否比常规对象更长时间? 如何在Java中手动强制删除/垃圾回收? 谢谢。