黑马程序员技术交流社区
标题:
单例问题
[打印本页]
作者:
王运科
时间:
2012-4-23 17:06
标题:
单例问题
N个客户机掉一个单例会不会使系统性能下降。java单例是多线程。麻烦大家讲解一下
作者:
黑马-刘昌文
时间:
2012-4-23 17:49
不会,当你第一次调用单例的方法得到一个实例的时候,会创建这个类的实例,在内存中会为这个单例开辟一块空间,以后再调用,得到的只是这个类的引用,并不会再去创建它的实例!所以不会影响性能!
作者:
邱俊杰
时间:
2012-4-23 17:58
本帖最后由 邱俊杰 于 2012-4-23 18:00 编辑
单例有懒汉和饿汉、就顺便复习一下代码吧,
饿汉士:不过通常考的是懒汉士
*class Single
*{
* private static final Single s=new Single();
* private Single (){}
* public static Single gerInstance()
* {
* return s;
* }
复制代码
这是饿汗士多线程执行的代码。
// 懒汉士
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;
}
}
复制代码
作者:
孙天
时间:
2012-4-23 21:08
饿汉式没有问题,懒汉式存在多线程并发访问的安全问题。所以需要同步线程安全问题,但是同步会降低效率。所以可以通过双重if判断的形式,解决效率问题,降低对锁的判断次数。所以在代码体现上较多。所以开发时,单例建议使用饿汉式
作者:
孙魁星
时间:
2012-4-23 21:12
单例是只会创建一个类的实例的,调用的是实例的引用。所以不会
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2