辛格尔顿

辛格尔顿

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

辛格尔顿(Singleton),以保证一个类只有一个实例,并提供了一个全球性的接入点访问它。

因为辛格尔顿Singleton它的类封装的唯一实例,因此,它可以妍格控制客户如何以及何时访问它访问。

简单地说,它是受控访问的唯一的例子。

package gof23;

public class SingletonTest {
	public static void main(String[] args) {
		Singleton obj1 = Singleton.getInstance();
		Singleton obj2 = Singleton.getInstance();
		System.out.println(obj1 == obj2);
	}
}

class Singleton {
	private static Singleton instance = null;
	
	private Singleton() {     //构造方法让其private,这就堵死了外界利用new创建此类实例的可能
		
	}
	
	public static Singleton getInstance(){
		if(instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
}

结果为:

true

多线程时的单例

多线程的程序中,多个线程同一时候,注意是同一时候訪问Singleton类,调用getInstance()方法,会有可能造成创建多个实例,这个时候能够给进程加一把锁进行处理。

package gof23;

import java.util.concurrent.locks.ReentrantLock;

public class SingletonTest {
	public static void main(String[] args) {
		Singleton obj1 = Singleton.getInstance();
		Singleton obj2 = Singleton.getInstance();
		System.out.println(obj1 == obj2);
	}
}

class Singleton {
	private static Singleton instance = null;
	private static ReentrantLock lock = new ReentrantLock();
	private Singleton() {     //构造方法让其private,这就堵死了外界利用new创建此类实例的可能
		
	}
	
	public static Singleton getInstance(){
		if(instance == null) {
			lock.lock();      //先推断实例是否存在,不存在在加锁处理,能够避免每次调用getInstance方法都须要lock
			try {
				if(instance == null) {        //双重锁定
					instance = new Singleton();
				}
			}
			finally {
				lock.unlock();      //释放锁
			}
		}
		return instance;
	}
}

执行结果为:

true

版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117709.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • recvfrom的参数

    recvfrom的参数今天遇到一个奇怪的问题。linux环境下gcc,socket中UDP的recvfrom函数原型ssize_trecvfrom(intsockfd,void*buf,intlen,unsignedintflags,structsockaddr*from,socket_t*fromlen);网上给出的最基本的UDP—echo服务器测试基本的是可以的。…

    2022年7月23日
    11
  • pycharm 激活码2022【最新永久激活】

    (pycharm 激活码2022)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
    3.3K
  • Modelsim-win32-6.6d 破解安装教程

    Modelsim-win32-6.6d 破解安装教程1、准备文件  modelsim-win32-6.6d-se.exe 2、安装步骤·(安装前把杀毒软件关闭)双击文件 modelsim-win32-6.6d-se.exe(注:安装路径不要有中文)点击Next 点击Browser ,建议安装目录改成自己新建在D盘下  点击Next—->Agree —–>等待安装 安…

    2022年5月10日
    62
  • jmeter怎么测性能(vs性能测试)

    1.背景介绍XXX认证要求测试合作伙伴的APP服务器性能,主要涉及APP服务器最大的并发请求消息处理能力,根据《XXX认证解决方案设计说明书》里的要求,APP服务器并发数量为2500packet/s,即在10秒内的第1秒达到2500packet/s,后面9秒等待APP服务器处理。2.测试需求APP服务器并发请求消息处理能力为2500packet/s3.测试用例名称预置条件测试步骤预期结果APP处理北向推送数据的能力1.在公有云上完成

    2022年4月12日
    85
  • github开源可视化_可视化拖拽项目管理 github

    github开源可视化_可视化拖拽项目管理 githubGIT下载:国内太慢甚至下载不了的解决方法。在淘宝的镜像网站上下载: https://npm.taobao.org/mirrors/git-for-windows/gitconfig

    2022年8月2日
    8
  • 计算机中位数求和方法总结例题,众数与中位数典型例题「建议收藏」

    计算机中位数求和方法总结例题,众数与中位数典型例题「建议收藏」《众数与中位数典型例题》由会员分享,可在线阅读,更多相关《众数与中位数典型例题(3页珍藏版)》请在人人文库网上搜索。1、典型例题例1求下列数据的众数(1)3,2,5,3,1,2,3(2)5,2,1,5,3,5,2,2分析:一组数据的众数不一定唯一,因此,如果一组数据中有几个数据重复的次数相同,并且次数是最高的,那么这几个数据都是这组数据的众数解:(1)众数是3(2)众数是5和2说明:众数是一组数…

    2022年9月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号