美文网首页
this的逃逸

this的逃逸

作者: imbird | 来源:发表于2017-04-08 15:13 被阅读0次

    Mark一下这篇文章
    http://m.blog.csdn.net/article/details?id=10607295

    并发编程实践中,this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了。这是危及到线程安全的,因为其他线程有可能通过这个逸出的引用访问到“初始化了一半”的对象(partially-constructed object)。这样就会出现某些线程中看到该对象的状态是没初始化完的状态,而在另外一些线程看到的却是已经初始化完的状态,这种不一致性是不确定的,程序也会因此而产生一些无法预知的并发错误

    这个链接中this逃逸的两个条件如下
    它需要满足两个条件:一个是在构造函数中创建内部类(EventListener),另一个是在构造函数中就把这个内部类给发布了出去(source.registerListener)

    发布出去的内部类对象自带对外部类this的访问权限。

    所以在使用内部类的时候,在外部类写构造方法并且在构造方法中new InnerClass()的时候,需要避免发布这个内部类对象,否则会破坏外部类对象的构造方法的一致性问题

    相关文章

      网友评论

          本文标题:this的逃逸

          本文链接:https://www.haomeiwen.com/subject/mjblattx.html