Java学习之线程锁--单例模式写法--synchronized

单例设计模式:

1):懒汉式:(不一定安全,确保只有一份对象需要synchronized)

1.构造器私有化

2.声明私有的静态属性

3.对外提供访问属性的静态方法,确保该对象存在。

(1):写法,多线程下不安全

public class TestSingeton02 {

	private static TestSingeton02 instance;
	private TestSingeton02(){		
	}
	public static TestSingeton02 getInstance(){
		if(null == instance){
			instance = new TestSingeton02();
		}
		return instance;
	}
}

(2):写法,加锁

public static  TestSingeton02 getInstance3(){
		if(null == instance){//提高已经存在的对象访问效率
			synchronized(TestSingeton02.class){//加锁
				if(null == instance){
					instance = new TestSingeton02();
				}
			}
		}
		return instance;
	}

2):饿汉式:(一定是安全的,只有一份对象)

1.构造器私有化

2.声明私有的静态属性,同时创建该对象

3.对外提供访问属性的静态方法,确保该对象存在。

(1):写法:初始化就加载

class TestSingeton03 {
	//初始化加载
	private static TestSingeton03 instance = new TestSingeton03();
	private TestSingeton03(){		
	}
	public static TestSingeton03 getInstance(){
		return instance;
	}
}

(2):写法:类在使用的时候加载,延时加载

class TestSingeton04 {
	//类在使用的时候加载,延时加载
	private static class Single{
		private static TestSingeton04 instance = new TestSingeton04();
	}
	private TestSingeton04(){
	}
	public static TestSingeton04 getInstance(){
		return Single.instance;
	}
}

    原文作者:java锁
    原文地址: https://blog.csdn.net/haitaofeiyang/article/details/44124375
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞