首页 > 编程语言 >Java单例

Java单例

时间:2023-03-22 17:36:13浏览次数:48  
标签:singleton Java HungrySingleton private static 单例 StaticInnerSingleton

/**
 * @Author: DengJia
 * @Date: 2023/3/22
 * @Description: 单例
 */

public class Singleton {
    public static void main(String[] args) {
        System.out.println(HungrySingleton.getSingleton());
        System.out.println(LazySingleton.getSingleton());
        System.out.println(StaticInnerSingleton.getSingleton());
    }
}

/**
 * 饿汉式单例
 */
class HungrySingleton {
    private HungrySingleton() {
    }

    private static HungrySingleton singleton = new HungrySingleton();

    public static HungrySingleton getSingleton() {
        return singleton;
    }
}

/**
 * 懒汉式单例
 */
class LazySingleton {
    private LazySingleton() {
    }

    private static LazySingleton singleton = null;

    public static synchronized LazySingleton getSingleton() {
        if (singleton == null) {
            singleton = new LazySingleton();
        }
        return singleton;
    }
}


/**
 * 静态内部类实现单例
 */
class StaticInnerSingleton {
    private StaticInnerSingleton() {
    }

    private static StaticInnerSingleton singleton;

    private static class SingletonHandler {
        private static final StaticInnerSingleton singleton = new StaticInnerSingleton();
    }

    public static StaticInnerSingleton getSingleton() {
        return SingletonHandler.singleton;
    }
}

标签:singleton,Java,HungrySingleton,private,static,单例,StaticInnerSingleton
From: https://www.cnblogs.com/DJOSIMON/p/17244827.html

相关文章

  • Java学习笔记(八)GUI
    GUI编程如何学习?这是什么?它怎么玩?该如何去平时运用?组件窗口弹窗面板文本框列表框按钮图片监听事件鼠标键盘破解工具1.简介Gui的核心技术:SwingAWT,......
  • Java 执行命令 Apache Common-Exec
    command="cmd.exe/c"+command;ByteArrayOutputStreamstdout=newByteArrayOutputStream();PumpStreamHandlerpsh=newPumpStreamHandler(stdout);CommandLinecl......
  • Java 全文搜索框架 Lucene
    Lucene是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员......
  • JavaScript 通讯框架 NowJS
    NowJS是一个实现了JavaScript服务器端进行通讯的框架,基于​​Node.js​​开发。示例代码:服务器端:<scriptsrc="/nowjs/now.js"></script>vareveryone=require("now"......
  • Java调用标签打印机打印标签
    标签打印机:TSC TTP-244Pro打印机驱动:file:///C:/Users/admin/Downloads/tsc_2022.1_m-2.exe_1.zip官方文档预览下载: https://fs.chinatsc.cn/system/files/tspl_tspl......
  • elasticsearch RESTful搜索引擎-(java jest 使用[入门])
     elasticsearch简称ESjest好吧下面我介绍下jest(第三方工具)它是ES的java客户端,基于httprestful...jest是开源的 首先看看项目的目录结构我一般习惯了用maven去管理我的......
  • Could not read JSON: Can not deserialize instance of java.lang.Integer out of ST
    Spring会将{id:id}这个json转换成Map对象,只要将@requestBody中的参数改成Map就可以了,如下@RequestMapping(value="/delete",method=RequestMethod.POST,produces="applicat......
  • rapid-framework(java web快速开发脚手架,代码生成器)
    web项目脚手架rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭......
  • java中数组删除
    ListcommonList=newArrayList(); if(commonList.size()>3)//如果数组个数大于3个,则删掉后面的,只剩余前三个{for(inti=3;i<commonList.size();i......
  • java 微信支付v3 —7.微信支付之申请退款
    正文不得不说,申请退款和创建订单是非常相似的,流程都一样,只是请求的数据变了,那么我们第一步就是封装请求数据成对象形式,方便后续调用。1.申请退款请求对象微信支付订单......