一个类有一个私有变量,整个类里没有一句把它设程null的,
整个实现了静态单例,今天发现该变量变为null。
什么情况会导致这种情况发生?
整个实现了静态单例,今天发现该变量变为null。
什么情况会导致这种情况发生?
解决方案 »
- 多线程安全问题
- 谁有比较好的J2SE的练习题
- 在java中如何在一张图片上添加按钮控件?
- 字符 字节流 有必要都掌握么 ,没有英文基础学JAVA感觉真的好痛苦
- 如何设置Swing控件不可用(即setEnabled(false))时的字体颜色?需要一个通用方法,急呀!!!!!!
- 菜鸟提问:J2EE和J2SE的区别?
- 问:当输入javac hellojava.java后,按回车,dos显示的是“javac不是内部或外部命令,也不是可运行程序或批处理文件.",这是咋回事?
- Error: java.lang.ArrayIndexOutOfBoundsException,什么意思?如何解决?
- 请问怎样使用JTableHeader中columnMoved(TableColumnModelEvent e)方法,谢谢
- Java封装
- 这个控件是什么?叫什么名字?
- 64位系统问题
2、静态单例可能获取对象时没正确获取到
什么时候的事情?今天才发现啊?如果你能保证没有一句把它设置成null的话.那只有一个原因,就是初始化
public class Test {
private Object object;
private static Test test = null;
private Test(){
object = new Object();
}
public static Test getInstantce() {
if (test == null) {
test = new Test();
}
return test;
}
public static void main(String[] args){
Test.getInstantce();
while(true){
Test.getInstantce().object.toString();
//跑着跑着会报nullpoint?
}
}
}
private static Object object;
private static Test test = null;
private Test(){
object = new Object();
}
public synchronized static Test getInstantce() {
if (test == null) {
test = new Test();
}
return test;
}
public static void main(String[] args){
Test.getInstantce();
while(true){
Test.getInstantce().object.toString();}
}
}
一般都是直接报outofmemery吧