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;
}
}
}
我想知道像上面那样从另一个线程覆盖成员变量是否是一种好习惯,以及是否有任何更简洁的替代方法。
解决方案
推荐阅读
- reactjs - 如何在 Gatsby 项目中使用自定义组件文件夹?
- azure-devops - VSTS 发布管道发布门:如何进行 HTTP 响应正文字符串相等性检查?
- javascript - 在 jQuery 中访问表格单元格
- jquery - 我如何在数据表 jquery 中使用 laravel 关系引用
- javascript - 在 nodejs 中运行 bat 文件时出现空白 cmd 提示
- python - 循环数据框并删除行
- python - 如何在调试器中跳过 PYTHON 行代码?
- android - 导航抽屉/片段中的 OnBackPress 上的片段重叠
- selenium - 传递 BinaryLocation 时出现 OpenQA.Selenium.DriverServiceNotFoundException
- json - 可编码和可选的 JSON 字段