广河县 永丰县 怀宁县 海南省 茂名市 大足县 和林格尔县 礼泉县 梓潼县 石首市 宝山区 手游 定州市 额济纳旗 达州市 靖远县

文章导航软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:单机游戏角色扮演 → 怪物猎人世界新装备介绍 怪物猎人世界新装备新系统一览

追梦赤子心_java单例设计模式

标签:婚礼 沈阳麻将怎么胡

什么是单例设计模式

单例即只有一个实例,该模式的作用是保证程序中某个类的对象只有一个。

单例模式分为懒汉式和饿汉式。

懒汉式

class Student{
	static Student st;
	private Student(){}
	public static Student getInstance(){
		//引用数据类型属性在内存中的默认值为null
		//如果值为null 只创建一次对象
		if(st==null){
			st = n千方百计爱上你_2018年最新新闻网ew Student();
		}
		return st;
	}
}

public class Test1 {
	
	public static void main(String[] args) {
		// 利用hascode 相等 是单例  
		Student tes1 = Student.getInstance();
		System.out.println(tes1.hashCode());
		
		Student tes2 = Student.getInstance();
		System.out.println(tes2.hashCode());
	}
}

以上可以看出结果的hasCode值是相同的只创建了一个对象

但是这种模式在多线程的情况下会产生线程安全问题:

class Teacher{
	static Teacher s;
	private Teacher(){}
	public static Teacher getInstance(){
绝望主妇_2018年最新新闻网		if(s == null){
			s = new Teacher();
		}
		return s;
	}
}

class StudentThread extends Thread{
面对面_2018年最新新闻网	public void run(){
		for(int i = 0;i<3;i++){
				Teacher ss = Teacher.getInstance();
				System.out.println(ss.hashCode());
		}
	}
}

public class Test2 {
	public static void main(String[] args) {
		//单例模式在多线程中存在线程安全问题  需要解决线程安全
		//创建线程
		StudentThread tt1 = new StudentThread();
		StudentThread tt2 = new StudentThread();
		//就绪状态
		tt1.start();
		tt2.start();
	}
}

如果在运行多次的情况下会出现hasCode不一定都一样 这就出现了线程安全问题:

解决办法只需要将返回对象的方法设置为同步方法即可

public synchronized static Teacher getInstance(){
		if(s == null){
			s = new Teacher();
		}
		return s;
	}

饿汉式

//饿汉式
class Hangle{
	//创建静态属性的时候就赋值  并且只执行一次  也就是说只创建一次对象
	static Hangle ha = new Hangle();拳皇命运_2018年最新新闻网
	public static Hangle getInstance(){
		return ha;
	}
}

clas战无不胜_2018年最新新闻网s SingleThread extends Thread{
	public void run(){
		for(int i = 0;i<4;i++){
			Hangle hh = Hangle.ha;
			System.out.println(hh.hashCode());
		}
	}
}

public class Test3 {
	public static void main(String[] args) {
		SingleThread tt1 = new SingleThread();
		SingleThread tt2 = new SingleThread();
		
		//就绪状态
		tt1.start(autocad_2018年最新新闻网);
		tt2.start();
		
		// 总结: 懒汉式 在多线程环境中会发生线程安全问题 (可以解决线程问题)
		//而饿汉式不管是在单线程还是在多线程中 不存在线程安全问题  建议定义单例模式的话 用饿汉式
		//饿汉式单例模式要比懒汉式效率高
	}
}

当前文章:http://u9sgf8ni-detonghua-com.miubeautiful.cn/zzu70jjyc/f6086_157406.html

发布时间:2019-08-22 00:08:15

www.7163.com澳门银河  银河娱乐是正规网站吗雷军香港见李嘉诚 长和与小米达成合作  澳门银河2949所有网址  澳门银河yh99.com  银河娱乐手机版yh163am.com  银河娱乐手机官网  澳门银河真人yh163am.com  李晨得奖 范冰冰深夜现身:我哥  银河优越会会员申请缅甸帕敢矿区再发山体滑坡 已致至少12人死亡  澳门银河真人在线娱乐  

相关阅读 苹果macOS 10.13.5正式版更新发布:支持iCloud云端“信息”北京朝阳检方:批捕在双井街头打人男子抖音回应腾讯起诉:解释权属于腾讯,祝福微视“五一”小长假旅游大数据报告发布 三亚位居国内前十大休闲度假目的地首位12期免息:ThinkPad X1 Tablet Evo选购指南日版电影《那些年 我们一起追过的女孩》公开预告 斋藤飞鸟演绎青春恋情springcloud之自定义简易消费服务组件西南林业大学原校长蒋兆岗被抓获 此前潜逃被通缉

文章评论
发表评论

热门文章 斐讯商城大能扫地机器人X3开放购买,领券抢赚100元美的空调超级秒杀盛典:爆品直降,用券劲省800元热游情报:CF高清版来了 DNF十周年副本居然是玩LOLPO设计模式-实现移动端自动化测试

最新文章 不止Cortana:亚马逊Alexa、Google Assistant或将登陆微软Xbox One西南林业大学原校长蒋兆岗被抓获 此前潜逃被通缉 深圳将增开至喀什旅游专列和包机广州打造安全“菜篮子”工程苹果macOS 10.13.5正式版更新发布:支持iCloud云端“信息”我国高寒地区最长快速铁路哈佳铁路全线贯通

人气排行 麻省理工毕业生本月将获得区块链毕业证书动漫星空晚报:《名侦探柯南》漫画第1013话图透 《海贼王》路飞艾斯老年形象曝光北京物资学院MBA调剂:构建物流流通专业翘楚院校哈罗单车获蚂蚁金服等20亿元增资,估值超14亿美元腾讯自动驾驶汽车首次亮相交通展没有硬件,不押注AI,苹果在求稳中彻底“软”了使用“牛顿迭代法”求解方程木门、涂料等建材品牌纷纷推儿童专用