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

最近在看《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"逸出解决方法的思考)