黑马程序员技术交流社区
标题:
给位亲,帮忙解决一下这个问题,关于单例模式同步的
[打印本页]
作者:
王小忠
时间:
2014-11-25 00:52
标题:
给位亲,帮忙解决一下这个问题,关于单例模式同步的
如果将同步对象换成instance将会报空指针异常,为什么?
代码如下:
class ArraysTools {
/**
* 单利--懒汉模式 ①:将构造器私有化 ②:声明一个ArraysTools 实例对象instance,初始值为null;
* ③:对外提供一个公共的静态方法,并作同步,用来获得instance
*/
private static ArraysTools instance = null;
private ArraysTools() {
}
public static ArraysTools getInstatce() {
synchronized (ArraysTools.class) {//如果将同步对象换成instance将会报空指针异常,为什么?
if (instance == null) {
instance = new ArraysTools();
}
return instance;
}
}
作者:
cbb
时间:
2014-11-25 01:06
......因为读到这句话的时候 ,你的本类对象还没建立!是null 它肯定出现空指针异常啊
作者:
sin
时间:
2014-11-25 01:10
这段代码没有问题啊??、
作者:
壹贰叁
时间:
2014-11-25 04:07
instance 对象都还没创建呢?你上面不是自己定义好了吗?
作者:
zhangyangLengen
时间:
2014-11-25 12:58
Synchronized 中必须是对象,而且对象不能为空,但是你,上面一开始是Instance对象是空
作者:
hailong
时间:
2014-11-25 14:07
本帖最后由 hailong 于 2014-11-25 14:08 编辑
方法是静态的,静态进内存时,内存中没有本类对象,需要使用该类对应的字节码文件对象,也就是ArraysTools.class做为锁
作者:
mmppp
时间:
2014-11-25 15:14
代码没有问题啊
作者:
DamonZh
时间:
2014-11-25 22:38
第一次拿锁对象还没建立嘛,所以空指针异常
作者:
chen_32768
时间:
2014-11-25 23:03
没创建对象,要创建这个对象并赋予
作者:
天涯无痕
时间:
2014-11-25 23:26
锁的顺序啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2