单例模式 java面试题

单例模式 java面试题


2024年4月19日发(作者:)

单例模式 java面试题

单例模式是Java面试中经常被问及的一个话题。在本文中,我将介

绍单例模式的概念、实现方式以及与其他设计模式的比较,并提供一

些常见的面试题供读者参考。

1. 概念介绍

单例模式是一种创建型设计模式,它保证一个类只能有一个实例,

并提供一个全局访问点。它常用于需要限制实例个数的情况,如数据

库连接池、线程池等。

2. 实现方式

单例模式有多种实现方式,下面介绍几种常见的:

2.1 懒汉式

懒汉式是指在首次需要获取实例时才进行实例化。它的实现方式如

下:

```java

public class Singleton {

private static Singleton instance;

private Singleton() {}

public static synchronized Singleton getInstance() {

if (instance == null) {

instance = new Singleton();

}

return instance;

}

}

```

在多线程环境下,懒汉式需要考虑线程安全问题,通过添加

`synchronized`关键字来保证线程安全。然而,这种方式在高并发场景

下性能较差,因为每次获取实例都需要进行同步。

2.2 饿汉式

饿汉式是指在类加载时就进行实例化,它的实现方式如下:

```java

public class Singleton {

private static Singleton instance = new Singleton();

private Singleton() {}

public static Singleton getInstance() {

return instance;

}

}

```

饿汉式天生是线程安全的,但在实例化时就创建对象可能会增加系

统负担,特别是实例化较为复杂的情况。

2.3 双重检查锁

双重检查锁是指在实例化时进行双重检查,以保证线程安全并提高

性能。它的实现方式如下:

```java

public class Singleton {

private volatile static Singleton instance;

private Singleton() {}

public static Singleton getInstance() {

if (instance == null) {

synchronized () {

if (instance == null) {

instance = new Singleton();

}

}

}

return instance;


发布者:admin,转转请注明出处:http://www.yc00.com/news/1713540297a2269206.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信