我正在学习Java多线程编程.我有一个以下逻辑:
假设我有一个A类
class A {
ConcurrentMap<K, V> map;
public void someMethod1 () {
// operation 1 on map
// operation 2 on map
}
public void someMethod2 () {
// operation 3 on map
// operation 4 on map
}
}
Run Code Online (Sandbox Code Playgroud)
现在我不需要同步"someMethod1"或"someMethod2"中的操作.这意味着如果有两个线程同时调用"someMethod1",我不需要序列化这些操作(因为ConcurrentMap将完成这项工作).
但是我希望"someMethod1"和"someMethod2"是彼此的互斥,这意味着当某个线程正在执行"someMethod1"时,另一个线程应该等待进入"someMethod2"(但是应该允许另一个线程进入"someMethod1").
那么,简而言之,有没有一种方法可以让"someMethod1"和"someMethod2"不是互相的互斥体而是互相的互斥体?
我希望我说的问题足够明确......
谢谢!