gpt4 book ai didi

java - 捕获应用程序状态的安全方法?

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:34 24 4
gpt4 key购买 nike

如果我有这样的应用程序:

Class Application {  
List state1 = new ArrayList();
Map state2 = new HashMap();
}

我有一个 RPC 服务在另一个线程中运行,用于报告应用程序的状态(例如:state1 中有多少项包含在 state2 键中)。最好的方法是什么?我正在寻找避免在访问 state1 和 state2 字段时使用同步的方法(这可能会降低应用程序的性能)。

最佳答案

同步成本有两个方面。

  1. synchronized本身的开销;和

  2. 该 block 内执行的操作的成本。

举个例子:

public synchronized int[] getState() {
return new int[] { state1.size(), state2.size() };
}

this 用于锁。这种情况下的操作非常便宜(即获取 CollecitonMapsize())。因此,唯一需要担心的开销是 synchronized 本身的成本。

在现代 JVM 中,成本如此之低,以至于除了最极端的情况之外,甚至不值得担心。我所说的“最极端”是指此类调用的数量非常大,或者所需的延迟非常低(亚微秒)。

所以只需使用同步即可。它的可读性要高得多,并且性能根本不是您想要的问题,除非有更多的东西。

关于java - 捕获应用程序状态的安全方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3433757/

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