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");
}
}
/*
* 单例模式就是在内存中想只能存在一个对象,而不允许再实例化其他的对象
*
* */
java 中多线程下的单例模式
最新推荐文章于 2023-01-21 01:18:07 发布