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中还没有其他方案可以满足上述需求的 即一个方法与其他方法是互斥的 但是其他方法是可以同时操作的
还是只能使用读写锁
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论