相关疑难解决方法(0)

互斥方法

我正在学习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"不是互相的互斥体而是互相的互斥体?

我希望我说的问题足够明确......

谢谢!

java multithreading

7
推荐指数
1
解决办法
1820
查看次数

标签 统计

java ×1

multithreading ×1