第一篇文章,创建对象中的半初始化状态。
new一个对象时候,会给这个对象申请一块内存,将类里的成员变量设置为默认值0,这个状态称为“半初始化状态”,然后调用类里面的构造方法,将成员变量设置为初始值,到这里就初始化完成了,最后astore_1建立关联。
如果创建对象的过程中,线程启动,可能成员变量的值还是默认值,而不是初始值,这种情况就叫做this溢出,比较规范的写法就是,尽量不要在创建对象的时候启动线程,等对象创建完成再启动线程,就不会有这个问题了。谢谢。
第一篇文章,创建对象中的半初始化状态。
new一个对象时候,会给这个对象申请一块内存,将类里的成员变量设置为默认值0,这个状态称为“半初始化状态”,然后调用类里面的构造方法,将成员变量设置为初始值,到这里就初始化完成了,最后astore_1建立关联。
如果创建对象的过程中,线程启动,可能成员变量的值还是默认值,而不是初始值,这种情况就叫做this溢出,比较规范的写法就是,尽量不要在创建对象的时候启动线程,等对象创建完成再启动线程,就不会有这个问题了。谢谢。