标签: java multithreading java-8
我想同步一段代码,但不想简单地锁定实现类(this)。
有问题的代码块是接收id的方法的一部分。
如果传入方法的id包含在类的列表中,我想禁止新线程进入块...如果它不在列表中,则实体可以自由操作,因此线程将被允许进入块...
有没有直接的方法来做到这一点?
答案 0 :(得分:5)
在JDK中没有明确的类,但正如(上一个)duplicate中所述,您可以使用ConcurrentHashMap来实现这种行为。
ConcurrentHashMap
Guava提供了Striped类,它为您提供了很多配置的良好解决方案,例如延迟创建锁和弱锁,以及配置要使用的条带(锁)的数量。