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

egdjgwm8  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(298)

我需要在成员变量过期之前刷新它。我选择从另一个线程执行它,该线程是从定期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;
        }
    }
}

我想知道从另一个线程覆盖一个成员变量是否是一个好的做法,比如上面提到的,以及是否有更干净的替代方法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题