gpt4 book ai didi

Java更新程序配置

转载 作者:行者123 更新时间:2023-12-01 17:35:36 25 4
gpt4 key购买 nike

我有一个多线程程序,它在启动时加载其配置。然后配置通过线程的构造函数传递给线程。

但现在我想定期加载一个新的配置实例,并将其传递给线程。

一个想法是使线程类中对配置文件的引用可变。然后,当更新的配置实例可用时,调用更新 update(Config c) 方法。

这是要走的路吗?我的性能会很糟糕,因为每次线程需要一些设置时,它都必须执行所有 volatile 检查。

有更好的建议吗?最佳实践?也许不要让它变得易失,并希望处理器不时从主内存中获取该新对象?

最佳答案

您可以将所有配置值封装在一个不可变对象(immutable对象)中,当配置更改时,创建该对象的新实例,并通过监听器或显式调用将其传递给线程。该对象没有 volatile 字段,只有对象本身可以写入 volatile 变量(或 AtomicReference)。

没有其他同步机制的直接 volatile 方法是危险的:您可能会读取半重写的配置。

无论如何,对应用程序的性能影响可能可以忽略不计。如果你发现这确实是一个瓶颈,稍后再考虑优化。

关于Java更新程序配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705829/

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