解答:下面是一个简单的线程安全的单例模式实现,使用双重检查锁(double-checked locking)来确保线程安全性。
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关键字来确保多线程环境下对instance变量的可见性。在getInstance方法中,我们使用双重检查锁来保证只有在instance为null时才创建新的实例,
从而避免多个线程同时创建多个实例的问题。
这种方式是一种常见的线程安全的单例模式实现方式,但也有其他的实现方式,比如使用静态内部类、枚举等。在面试中,除了实现单例模式,面试官可能还会询问单例模式的优缺点、线程安全性、延迟初始化等相关问题,因此在准备面试时需要对单例模式有一个全面的了解。
发布评论