gpt4 book ai didi

java - ExecutorService 正在获取仍在构建中的可运行对象

转载 作者:行者123 更新时间:2023-12-02 08:31:04 25 4
gpt4 key购买 nike

我想知道这段代码是否正确。当我在构造对象本身时将可运行对象提交给执行器服务时,这不会导致问题吗?

public class A implements Runnable {
public A() {
Executors.newSingleThreadExecutor().execute(this);
// some other initializations
}
}

当我们在完全创建对象之前尝试将对象提交给执行器时,这会导致任何问题吗?如果在所有初始化完成之前就调用 run() 方法(如果可能的话),那么尚未初始化的变量是否仍为 null?

请不要要求我提供完整的代码,因为我一直将此作为一个需要澄清的一般问题来问。

最佳答案

是的,可能存在问题。即使在执行构造函数中的相应代码之前,Executor 也可能会读取您在构造函数中设置的字段。一般来说,您不应该从构造函数内部公开 this。 Java 在对象的构造函数完成后为其提供有用的保证,但为了从中受益,您必须在使用它之前等待 new X(...) 的结果。

关于java - ExecutorService 正在获取仍在构建中的可运行对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com