Java多线程中的单例模式两种实现方式
Java多线程中的单例模式
一、在多线程环境下创建单例
方式一:
packagecom.ietree.multithread.sync; publicclassSingletion{ privatestaticclassInnerSingletion{ privatestaticSingletionsingle=newSingletion(); } publicstaticSingletiongetInstance(){ returnInnerSingletion.single; } }
方式二:
packagecom.ietree.multithread.sync; publicclassDubbleSingleton{ privatestaticDubbleSingletonds; publicstaticDubbleSingletongetDs(){ if(ds==null){ try{ //模拟初始化对象的准备时间... Thread.sleep(3000); }catch(InterruptedExceptione){ e.printStackTrace(); } synchronized(DubbleSingleton.class){ if(ds==null){//这个判断很重要,如果没有那将不是单例,而是多例 ds=newDubbleSingleton(); } } } returnds; } publicstaticvoidmain(String[]args){ Threadt1=newThread(newRunnable(){ @Override publicvoidrun(){ System.out.println(DubbleSingleton.getDs().hashCode()); } },"t1"); Threadt2=newThread(newRunnable(){ @Override publicvoidrun(){ System.out.println(DubbleSingleton.getDs().hashCode()); } },"t2"); Threadt3=newThread(newRunnable(){ @Override publicvoidrun(){ System.out.println(DubbleSingleton.getDs().hashCode()); } },"t3"); t1.start(); t2.start(); t3.start(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!