您的位置:首页 > 职场人生

java面试中单例问题

2014-04-01 10:24 155 查看
public class SingltonTest {
private SingltonTest() {
};

private static SingltonTest st;

public static SingltonTest getInstance() {
// 1.3 避过同步锁方法,性能提高
if (null != st) {
return st;
}
synchronized (SingltonTest.class) {
if (null == st) {
st = new SingltonTest();
}
}
return st;
/*
最开始的版本1.1	疏忽:如果多个线程进入if,还是会出现线程安全问题
if (null == st) {
synchronized (SingltonTest.class) {
st = new SingltonTest();
}
}

return st;
--------------------------------
第二个版本1.2		缺点:每次都要使用synchronized块,性能问题
synchronized (SingltonTest.class) {
if (null == st) {
st = new SingltonTest();
}
}

return st;
-------------------------------
1.3换装
if (null == st) {
synchronized (SingltonTest.class) {
if (null == st) {
st = new SingltonTest();
}
}
}
return st;
*/
}
}


如果还有更好的结构,欢迎指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: