gpt4 book ai didi

java - 如何锁定(同步)静态类?

转载 作者:行者123 更新时间:2023-12-01 16:41:21 25 4
gpt4 key购买 nike

我正在创建一个静态类,它将保存一些带有信息的 vector 。我必须使其同步,以便在有人编辑或读取 vector 时该类将被锁定。

最好的方法是什么?

拥有一个在类内部同步的函数就足够了吗:

public synchronized insertIntoVector(int id)
{

}

提前致谢:)

最佳答案

首先,您需要准确定义“静态类”的含义。起初,我以为您的意思是一个所有方法都是静态的类(并不意味着要实例化) - 但您的代码片段暗示情况并非如此。

无论如何,类内的同步方法如果是实例方法,则相当于 synchronized(this);如果是实例方法,则相当于 synchronized(TheContainingClassName.class)静态方法。

如果您正在创建一个包含所有静态方法的不可实例化类,或者您正在创建一个充当单例的类,那么同步该类的每个方法将确保只有一个线程可以在以下位置调用方法:一次。

如果可能的话,请尽量确保您的方法是原子的;对不同方法的调用可以由其他线程交错进行,因此诸如 getFoo() 调用后跟 setFoo() (可能在递增 foo 变量之后)之类的调用可能不会如果另一个线程在其间调用 setFoo() ,则会达到预期的效果。最好的方法是使用诸如 incrementFoo(); 之类的方法。或者(如果不可能)您可以发布同步详细信息,以便您的调用者可以在整个调用序列期间手动锁定类/实例。

关于java - 如何锁定(同步)静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324689/

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