Java一个代码加锁方案咨询

需求
FooService:

  • methodA
  • methodB
  • methodC

A 与 B C是互斥的 即不能同时操作 但B与C是可以同时操作的

显然synchronized不支持 因为都是互斥关系了

- synchronized void methodA
- synchronized void methodB
- synchronized void methodC

一种解决方法
采用读写锁 如下所示

private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();

public void methodA() {
    rwl.writeLock().lock();
    // do something here
    rwl.writeLock().unlock();
}


public void methodB() {
    rwl.readLock().lock();
    // do something here 
    rwl.readLock().unlock();
}

不知道Java中还没有其他方案可以满足上述需求的 即一个方法与其他方法是互斥的 但是其他方法是可以同时操作的
还是只能使用读写锁

阅读 1.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题