构造函数泄露this是什么意思有什么问题么
- Java code
public class Javahqx extends javax.swing.JLabel implements cantime { static sLtime slt = sLtime.getsLtime(); public Javahqx() { super(); slt.add("qqxx", 30, this); }
------解决方案--------------------
add操作里可能有其它线程操作传进去的this,而此时,this还没有构建完整(因为构造方法还没执行完),这时就操作this可能就有问题
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
原来如此 路过学习
------解决方案--------------------
slt 是共享变量,在多线程的环境下需要同步,即便在构造方法中。
http://topic.csdn.net/u/20090102/21/a217b3f6-35ef-4e86-ab1c-f7d05e934ef3.html
------解决方案--------------------
构造函数只是用于初始化,进入构造函数之前,对象实例已经被创建了。
对构造函数泄露this还真没明白?
------解决方案--------------------
1、构造方法写一些初始化的东西,构造完对象后再执行其它操作。这样的写法比较“正规”了,比如放到init方法中。
2、楼主的目的应该可能是,构造一个对象后,需要立刻将其在slt对象中进行一些维护;为防止多线程,可以对init方法进行同步化。
synchronize init(){
.....
.....
}
它本身就是用this做为同步锁。
只是一点最基本的方法,仅供参考。
------解决方案--------------------
------解决方案--------------------
当前对象