黑马程序员———单例模式
来源:互联网 发布:php web服务器搭建 编辑:程序博客网 时间:2024/06/10 17:45
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
单例模式:所谓的单例模式就是说程序运行中保证程序操作的对象是同一个对象,单例模式分为两种单例模式一种是懒汉式,一种是饿汉式单例模式
下面先贴出两种单例模式的代码:
//饿汉式
//Single类一进内存,就已经创建好了对象。
class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
这种单例模式叫做饿汉式单例模式,上来先创建一个对象,不管你用不用,就像一个饿汉,上来先强几个饼子,不管吃不吃得完一样,所以这个名字我感觉就是这么得来的嘻嘻
饿汉式单例模式是最常用,也是推荐的单例模式,不会产生线程安全问题。一般推荐使用饿汉式
懒汉式,就是用的时候才创建对象:代码如下
//懒汉式
class Single
{
private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
s=new Single();
return s;
}
}
懒汉模式容易产生线程安全问题,例如线程1,在通过Single.getInstance()获得实例时候,刚好,在判断完s后,s为空后,sleep()了,然后线程2进来判断s是否为空,发现为空就自己创建了Single对象,这时候线程1醒来了,又重现创建了线程,那么线程1和线程2通过Single类得到的对象就不是同一个对象了。
要解决这个问题就要用到线程锁synchronized,代码如下
class Single
{
private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s=new Single();
}
}
return s;
}
}
Single.class的字节码在内存中只有一份,所以可以作为锁对象来使用,这样就解决了线程安全问题了。
- 黑马程序员——单例模式
- 黑马程序员—单例设计模式
- 黑马程序员—单例设计模式
- 黑马程序员—单例设计模式
- 黑马程序员--设计模式——单例设计模式
- 黑马程序员————单例设计模式
- 黑马程序员———java 单例设计模式
- 黑马程序员———单例模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——多线程和单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例模式学习笔记
- 黑马程序员——浅谈java中的单例模式
- 黑马程序员 JAVASE——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- IAR-代码模板建立与代码编辑技巧
- OpenStack command-line interface cheat sheet
- [LeetCode] Count Complete Tree Nodes
- CMake命令之list
- 黑马程序员———单例模式
- XSS跨站测试代码大全
- 第十四周项目之oppo 电子词典
- google 字体开源
- 数码时钟
- Codeforces Round #301 (Div. 2) D(概率dp)
- HTML入门简介
- Kafka源码和文档阅读与体会(一)
- Socket send函数和recv函数详解