public class JiveProperties {
private static final String LOAD_PROPERTIES = "SELECT name, propValue FROM ofProperty";
private JiveProperties() {
System.out.println("JiveProperties constructor");
}
static {
System.out.println("static block");
}
private static class JivePropertyHolder {
static {
System.out.println("initing1");
}
private static final String LOAD_PROPERTIES = "Inner Static Class...";
private JivePropertyHolder() {
System.out.println("inner class...");
}
private static final JiveProperties instance = new JiveProperties();
static {
System.out.println("initing2");
}
}
public static JiveProperties getInstance() {
return JivePropertyHolder.instance;
}
public static void main(String[] args) {
System.out.println(JiveProperties.JivePropertyHolder.LOAD_PROPERTIES);
}
}
结果:
static block
Inner Static Class...
因此初步判断是迟加载且是线程安全的(由final保证)
分享到:
相关推荐
线程安全的单例模式在多线程环境下尤其重要,因为不正确的实现可能导致多个线程创建多个实例,这违反了单例模式的基本原则。C++11引入了新的特性,如std::mutex和std::call_once,使得实现线程安全的单例模式变得...
在这个例子中,`SingletonFactory` 类包含一个私有的静态内部类 `SingletonObj`,这个内部类持有 `SingletonFactory` 的单例实例。由于内部类只有在被引用时才会加载,所以 `SingletonFactory` 的实例是在第一次调用...
静态内部类实现单例模式是指在类的内部定义一个静态内部类,该内部类中包含一个静态的实例变量,并在该类的静态块中实例化该变量。外部类通过获取内部类的实例来实现单例模式。 例如,在下面的代码中,我们定义了一...
以上就是单例模式在Java中的常见实现方式,其中线程安全的实现包括饿汉式、静态代码块、双重检查锁定、静态内部类以及枚举方式。在实际应用中,应根据项目需求选择适合的单例实现方式,考虑到性能和线程安全等因素。...
给定的代码示例采用了一种称为“懒汉式”的单例模式实现方式,同时利用了静态内部类来保证线程安全性。这种方式也被称作“静态内部类法”或“初始化保证法”。下面将详细介绍其实现原理及其优势。 #### 静态内部类...
静态内部类模式结合了懒汉模式和饿汉模式的优点,既实现了延迟加载,又保证了线程安全。
静态内部类的实现方式既保证了线程安全,又延迟了单例的初始化。当类加载时,静态内部类不会被加载,因此单例只有在调用`getInstance()`时才会被创建。 ```java public class Singleton { private Singleton() {...
5. 静态内部类:利用Java类加载机制保证线程安全,同时避免了同步带来的性能影响。 ```java public class Singleton { private Singleton() {} private static class SingletonHolder { private static final ...
Java单例设计模式详解 Java单例设计模式是一种创建型设计模式,可以保证一个类只有一个实例,并提供...静态内部类单例模式是四种实现方式中最为常用的,因为它可以避免多线程环境下的同步问题,同时也避免了资源浪费。
通过一个私有的静态内部类SingletonHolder持有单例类的静态变量,利用Java的类加载机制来保证实例的创建过程只有一个线程可以操作,从而保证了线程安全。 每种单例模式实现都有其适用场景,需要根据具体的应用需求...
这是最简单的单例实现方式,通过类内部定义一个静态私有实例和公有的静态获取实例的方法。如下所示: ```cpp class Singleton { private: Singleton() {} ~Singleton() {} Singleton(const Singleton&) = delete...
这是最简单的实现方式,它在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public ...
这是最简单的单例实现,它在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public static...
静态内部类不会在主类加载时立即加载,只有在调用`getInstance()`方法时才会加载,从而确保线程安全: ```java public class Singleton { private static class SingletonHolder { private static final ...
代码通常包含一个私有构造函数,一个私有的静态单例对象和一个公共的静态获取单例的方法。这种方法在多线程环境中存在线程安全问题,如果不加同步控制,可能会创建多个实例。 ```java public class SingleInstance1...
- **懒汉式**:通过静态内部类或者双重检查锁定的方式来实现线程安全的懒加载单例模式,即在第一次使用时才初始化。 #### 十、线程安全的懒汉式单例 懒汉式单例在实现线程安全性时,通常采用双重检查锁定技术: ``...
1. **饿汉式(静态常量)**:这是最简单的单例实现方式,它在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快,且线程安全。 ```java public class Singleton { private static final Singleton ...
**饿汉式**是一种非常典型的单例模式实现方式,其特点是在类加载时就完成了实例化工作,因此不会出现线程安全问题。由于类加载是线程安全的,所以在类加载过程中创建的实例自然也是线程安全的。 **格式示例**: ``...
在Java中,可以使用静态内部类的方式实现饿汉式单例,这样既能保证线程安全,又能避免无用的初始化。 3. **静态工厂方法**: 除了构造函数,还可以通过静态工厂方法来获取单例对象,这种方法可以提供更大的灵活性...