Java 单例类的不同锁

Java 单例类的不同锁,java,multithreading,jakarta-ee,synchronization,Java,Multithreading,Jakarta Ee,Synchronization,我有一个包含3个HashMap的单例类。每个hashmap都像一个池。我把未使用的条目放在那里。我遇到了并发修改异常,所以我计划在它们上实现同步。我的问题是,如果我对所有锁都使用相同的锁,可能会出现性能问题。因为当我为该池创建一个条目时,它是通过一个web服务调用创建的。因为我只需要每个hashmap不同时运行,所以可以为它们创建3个对象锁吗?我建议您使用 该表是内部分区的,以尝试允许指定数量的并发更新,而不会产生争用 尝试使用ConcurrentyLevel参数优化性能。我建议您使用 该表是内

我有一个包含3个HashMap的单例类。每个hashmap都像一个池。我把未使用的条目放在那里。我遇到了并发修改异常,所以我计划在它们上实现同步。我的问题是,如果我对所有锁都使用相同的锁,可能会出现性能问题。因为当我为该池创建一个条目时,它是通过一个web服务调用创建的。因为我只需要每个hashmap不同时运行,所以可以为它们创建3个对象锁吗?

我建议您使用

该表是内部分区的,以尝试允许指定数量的并发更新,而不会产生争用

尝试使用ConcurrentyLevel参数优化性能。

我建议您使用

该表是内部分区的,以尝试允许指定数量的并发更新,而不会产生争用


尝试使用ConcurrentyLevel参数优化性能。

“可以为每个hashmap创建3个对象锁吗?”-不仅可以,而且是必需的。@Fildor单个共享锁有什么问题?@EldonHipolito如果愿意,您可以使用实际的映射对象作为锁。@EldonHipolito要显示一些代码或提供更多的上下文…@Fildor我只需要每个hashmap不并发运行,这意味着我们要禁止对每个映射的并发访问。就线程安全而言,一个锁就可以实现这一目标。OP的问题是,是否有可能通过使用单独的锁来减少争用。答案是可以,但不是绝对必要的。“可以为每个hashmap创建3个对象锁吗?”-不仅可以,而且是必需的。@Fildor单个共享锁有什么问题?@EldonHipolito如果愿意,您可以使用实际的映射对象作为锁。@EldonHipolito要显示一些代码或提供更多的上下文…@Fildor我只需要每个hashmap不并发运行,这意味着我们要禁止对每个映射的并发访问。就线程安全而言,一个锁就可以实现这一目标。OP的问题是,是否有可能通过使用单独的锁来减少争用。答案是可以,但不是严格必要的。在大多数情况下,调校确实不必要@Alexey。我已经编写了数百个CHM实现,从来没有对任何东西进行过调优。在大多数情况下,这种调优真的不必要@Alexey。我已经编写了数百个CHM实现,从来没有调整过任何东西。