个对象将只在执行线程第一次到达它的定义使初始化
时间: 2024-10-21 11:13:56 浏览: 26
初始java第一讲
这是关于线程安全的一个概念,通常在Java中提到的是单例模式的一种实现方式,称为"懒汉式单例"。在懒汉式单例模式中,一个对象只有当它首次被某个线程访问(也就是"到达其定义")并且还没有被实例化时,才会在该线程上进行初始化。这样做可以避免在多线程环境下立即创建对象导致的资源浪费或同步问题,因为如果其他线程不需要这个单例,它们就不会立刻创建一个新的实例。
懒汉式单例的主要代码结构通常是这样的:
```java
public class Singleton {
private static volatile Singleton instance;
// 防止构造函数外部直接实例化
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) { // 线程同步防止并发修改
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
在这个例子中,`volatile`关键字用于保证多线程环境下的可见性和有序性,而`synchronized`关键字则确保了只有一个线程能进入初始化块。
阅读全文