21xrx.com
2024-11-22 18:30:00 Friday
登录
文章检索 我的文章 写文章
我最近参加了一场Java设计模式期末考试
2023-06-15 19:21:24 深夜i     --     --

我最近参加了一场Java设计模式期末考试,感觉收获颇丰,现在来和大家分享一下。考试中有一道关于单例模式的题目,题目如下:

请用代码实现一个单例模式,要求确保多线程情况下也能保证只有一个实例,并且不会出现线程安全问题。

我首先想到的是基于双重检查锁定(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`关键字和双重检查锁定机制,`volatile`关键字可以确保变量的可见性,双重检查锁定可以保证在多线程环境下仍能保证只有一个实例。

另外,在考试中还涉及到了适配器模式以及模板方法模式等内容,这些都是我们日常开发中常用到的设计模式。关于Java设计模式的学习,我觉得掌握并不难,但是要做到真正的应用还需要经验的积累。

综上所述,我的考试经历可以用以下三个关键词来概括:单例模式、双重检查锁定、设计模式。最后,我的考试题目为:“Java设计模式期末考试题目”。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复