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

来源:互联网 发布:人工智能建模 编辑:程序博客网 时间:2024/06/05 18:25
多线程下单例模式加锁:
public class TestSingeton01 extends Thread{//声明私有的静态属性private static TestSingeton01 instance=null;//构造器私有化private TestSingeton01(){}//对外提供访问属性的静态方法,确保该对象存在。//提高已经存在的对象访问效率public static  TestSingeton01 getInstance3(){if(null == instance){//提高已经存在的对象访问效率synchronized(TestSingeton01.class){if(null == instance){instance = new TestSingeton01();}}}return instance;}//类对象加锁,效率不高,存在对象也需要等待public static  TestSingeton01 getInstance2(){synchronized(TestSingeton01.class){if(null == instance){instance = new TestSingeton01();}}return instance;}//给方法加锁,但是效率不高public static synchronized TestSingeton01 getInstance1(){if(null == instance){instance = new TestSingeton01();}return instance;}//多线程下不安全public static TestSingeton01 getInstance(){if(null == instance){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}instance = new TestSingeton01();}return instance;}@Overridepublic void run(){System.out.println(Thread.currentThread().getName()+"==>"+TestSingeton01.getInstance());}public static void main(String[] args) {TestSingeton01 t1 = new TestSingeton01();TestSingeton01 t2 = new TestSingeton01();t1.start();t2.start();}}

0 0
原创粉丝点击