java 中多线程下的单例模式

 
package namespace;



//单例模式--- 饿汉式
/*
class Person 
{
	private Person p=new Person ();
	private Person () {}
	public  Person GetInstance()
	{
		return p;
	}
}
*/
/*
 *   	下面是懒汉式,只在在单线种的情况下,而这种情况在多线程的情况下会多现在不安全现在,因为如果有两个线程同时访问到new Person ,那么我就生成两个对象,这样就违反了
 *   			单例模式下面一个是在多线
 * */
/*
class Person 
{
	private Person person=null;
	private Person () {}
	public Person getInstance()
	{
		if(person==null)
		{
			person =new Person();
		}
		return person;
	}
	
}*/
class Person 
{
	private Person person=null;
	private Person () {}
	public Person getInstance()
	{
		if(person==null)
		{
			synchronized(this)
			{
				if(person==null)
					person =new Person();
					
			}
		}
		return person ;
	}
}
/*
 * 
 *    这样在synchronized 线程控制块里面进行多线程的控制,就不会再出现多个线程访问时出现多个对象的情况了.
 *    还有一点就是外面的person ==null  判断是用来提高效率的,不然第一次都要对锁进行判断,消耗浓资源
 *    这样可以有次的提高效率
 * */
public class Single {
	public static void main(String args[])
	{
		System.out.println("this is java");
	}
}
/*
 *  		单例模式就是在内存中想只能存在一个对象,而不允许再实例化其他的对象
 * 
 * */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值