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();
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!