有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正在从另一个线程更新对象成员变量

我需要在成员变量到期之前刷新它。我选择从另一个线程执行,该线程是从定期ScheduledExecutorService任务生成的。我的目标是在连接对象到期之前刷新连接对象,这是在固定时间之后发生的,比如说服务器将关闭连接对象大约2小时,并且可能会有一些潜在的数据丢失。 我的代码如下所示

class Main {

    static ScheduledExecutorService clientReconnectPool = Executors.newScheduledThreadPool(10);

    Client client;

    Main() {
        clientReconnectPool.scheduleAtFixedRate(() -> {
            reconnectClient();
        }, 1, 1, TimeUnit.HOURS);
    }

    void reconnectClient() {

        Client newClient = initClient();
        if (newClient != null) {
            cleanupOldClient();
            client = newClient;
        }
    }
}

我想知道这样从另一个线程重写成员变量是否是一种好的做法,以及是否有更干净的替代方法


共 (0) 个答案