美文网首页
Java并发编程——"this"逸出解决方法的思考

Java并发编程——"this"逸出解决方法的思考

作者: 猫狗爪抓 | 来源:发表于2020-09-25 16:57 被阅读0次

    最近在看《Java并发编程实战》这本书的“3.2 发布与逸出”章节时,对“this”引用在对象构造方法中逸出问题的解决方法有点小疑惑。
    书上是这么说的:

    如果想在构造函数中注册一个事件监听器或启动线程,那么可以使用一个私有的构造函数一个公共的工厂方法,从而避免不正确的构造过程。

    代码:

    public class SafeListener {
        private final EventListener listener;
    
        private SafeListener() {
            listener = new EventListener() {
                public void onEvent(Event e) {
                    doSomething(e);
                }
            }
        }
    
        public static SafeListener newInstance(EventSource source) {
            SafeListener safe = new SafeListener();
            source.registerListener(safe.listener);
            return safe;
        }
    }
    

    我的疑惑就是,为什么构造方法一定要声明成private?我觉得声明成public应该也没问题吧?

    经过一番思考,想到一个场景,就是子类继承情况,如果构造方法声明成public,那么子类重载父类构造方法也是有可能引入“构造方法中“this”逸出问题”的吧?

    不知道有没有大佬有别的更合理的理解,还请指导一下!

    最后发一篇在网上参考的文章,个人觉得比书里讲的要好些的:Java并发编程——this引用逸出("this"Escape)

    相关文章

      网友评论

          本文标题:Java并发编程——"this"逸出解决方法的思考

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