Java面试题 实现单例设计模式(懒汉、饿汉)

简介: Java面试题 实现单例设计模式(懒汉、饿汉)

懒汉:


//懒汉,顾名思义比较懒,在用的时候才实例化
public class Singleton {
    //创建实例,注意,此时没有new
    private static volatile Singleton instance = null;
    //构造方法私有化,无法在外部获取实例,只能通过下方的公有静态方法
    private Singleton() {}
    //公有的静态方法,返回实例对象
    public static synchronized Singleton getInstance() {
        //先看下是否存在实例,有的话就不再new了
        if (instance == null) {
            //这里才new
            instance = new Singleton();
        }
        return instance;
    }
}


饿汉:


//饿汉,顾名思义很饥饿,创建对象的时候就直接new
public class Singleton {
    //创建实例的时候就new
    private static Singleton instance = new Singleton();
    // 私有化构造方法,外部不能new
    private Singleton() {}
    //公有的静态方法,返回实例对象
    public static Singleton getInstance() {
        //直接将事先new好的实例返回
        return instance;
    }
}
相关文章
|
设计模式 SQL 安全
【编程进阶知识】Java单例模式深度解析:饿汉式与懒汉式实现技巧
本文深入解析了Java单例模式中的饿汉式和懒汉式实现方法,包括它们的特点、实现代码和适用场景。通过静态常量、枚举类、静态代码块等方式实现饿汉式,通过非线程安全、同步方法、同步代码块、双重检查锁定和静态内部类等方式实现懒汉式。文章还对比了各种实现方式的优缺点,帮助读者在实际项目中做出更好的设计决策。
519 0
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
407 3
|
NoSQL Java 应用服务中间件
Java高级面试题
Java高级面试题
607 1
|
网络协议 安全 前端开发
java面试题
java面试题
111 1
|
NoSQL Java 关系型数据库
常见Java面试题
常见Java面试题
209 0
|
缓存 监控 算法
Java面试题:描述Java垃圾回收的基本原理,以及如何通过代码优化来协助垃圾回收器的工作
Java面试题:描述Java垃圾回收的基本原理,以及如何通过代码优化来协助垃圾回收器的工作
203 8
|
存储 Java 程序员
Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
631 11
|
5月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
274 1
|
5月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
294 1