单例对象会被jvm的gc时回收吗_单例模式的十种写法,你会几个?(重写版)

本文详细介绍了单例模式的多种实现方式,包括懒汉式、饿汉式、静态内部类、枚举式等,并讨论了线程安全与性能影响。此外,还探讨了单例模式在任务管理器、回收站等场景的应用以及可能导致非单例的情况,如类加载器不同或序列化反序列化。总结了如何确保单例在特定情况下不会被GC回收。
摘要由CSDN通过智能技术生成

这篇文章是今天重写的,开会搞了一下午,另一篇文章写了一半,等晚上写完明天发。最近在使用一个科学的方法研究一个有意思的事,如何科学化的判断你的另一半是否也爱你。废话不多说了,开始一下今天的文章。

单例模式是一种最常见的设计模式,写法也比较多,在这篇文章里面主要是对单例模式的各种写法进行一个介绍。面试的时候会对其中两三种进行体会,而且我还遇到了口述单例模式的例子。重要性就不言而喻了吧。

66d199b19ca52f5d831071f48fbf1e83.png

一、单例模式的介绍

单例模式的重要点在于两个,一个是在哪些地方使用到了单例模式,一个是单例模式如何写。之前只考虑到了如何写,但是哪些地方使用到了,表述的不是很清楚。这一次我找了几个实际例子。

概念:单例模式确保某个类只有一个实例。

有一个通俗的理解,那就是在古代,全国就一个皇帝。如何确保一个皇帝?这就是单例模式。

先看如何写,然后再看在哪用。

二、单例模式的各种写法

1、懒汉式:基本写法

懒汉式就是什么时候用,什么时候创建类的实例。

public class Singleton {   private Singleton() {}//构造方法   private static Singleton single=null;   public static Singleton getInstance() {        if (single == null) {              single = new Singleton();        }         return single;  }}

特点:

(1)线程不安全(并发时可能出现多个单例)

(2)构造方法为private,限定了外部只能从getInstance去获取单例

(3)使用static关键字,表明全局只有一份节约了资源,但是如果单例对象比较复杂,new时就比较耗时间。这一点要注意。

上面最主要的缺点就是线程不安全,因此想要解决这个问题,只需要对方法加锁即可。

2、懒汉式:使用synchronized 同步

publ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值