您的位置:首页 > 其它

单例

2015-10-17 10:46 162 查看
单例设计模式

面试问题:

一般采用饿汉式

因为在多线程的时候不会出现问题

*

懒汉式特点 实例的延迟加载

但在多线程时会出现安全隐患

加同步可决解问题

可加同步代码块

同步函数

用双重判断可决解效率问题

同步锁是 该类所属的字节码文件

/*

单例设计模式

面试问题:

一般采用饿汉式

因为在多线程的时候不会出现问题

*

懒汉式特点 实例的延迟加载

但在多线程时会出现安全隐患

加同步可决解问题

可加同步代码块

同步函数

用双重判断可决解效率问题

同步锁是 该类所属的字节码文件

*/

//饿汉式

/*

class Single{

private static final Single s=new Single();

private Single(){

}

public static Single getInstance(){

return s;

}

}

*/

//懒汉式

//在多线程调用时容易出现安全隐患

/*

class Single{

private static Single s=null;

private Single(){

}

public static Single getInstance(){

if(s==null){

s=new Single();

}

return s;

}

}

*/

//决解了安全隐患 但是出现了效率低下的问题

/*

class Single{

private static Single s=null;

private Single(){

}

public static synchronized Single getInstance(){

if(s==null){

s=new Single();

}

return s;

}

}

*/

class Single {

private static Single s = null;

private Single() {

}

public static synchronized Single getInstance() {

if (s == null) {//减少了判断锁的次数

synchronized (Single.class) {

if (s == null) {

s = new Single();

}

}

}

return s;

}

}

public class SingleDemo {

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: