gpt4 book ai didi

Java 线程安全 - 对方法的多重访问,除非正在使用另一种方法

转载 作者:行者123 更新时间:2023-11-30 09:14:26 24 4
gpt4 key购买 nike

我正在寻找解决问题的最佳方法:

我有一个贝叶斯模型类,您可以对其调用 classify。我希望尽可能多的线程访问它。但是,我有另一种方法可以改变对象 removeCategory 的内部结构。

我是否可以阻止线程仅在访问 removeCategory 时访问 classify

我想我可以通过信号量实现这一点,其中 classify 为每个线程获取 1 个许可,而 removeCategory 获取最大许可。这样它将阻塞,直到所有线程都完成 classify,并且另一个线程在许可被释放之前无法启动 classify 调用。

有没有更好的解决方案?

最佳答案

您所描述的本质上是一个 readwritelock .将您的 classify() 方法视为读者,将您的 removeCategory() 方法视为作者,您将获得所需的行为 - 该类将允许无限数量的读者在但一个作者将阻止所有其他作者(包括其他作者)

有一个使用此类的示例 here (以及许多其他地方)

关于Java 线程安全 - 对方法的多重访问,除非正在使用另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20510884/

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