Java 中是否成熟可用非可重入的 RWLock 的实现

2021-07-15 12:58:39 +08:00
 Brentwans
本质上来说是需要一个互斥和共享的信号量,JUC 中貌似没有直接提供。
我的使用场景:一块内存空间,存放在需要计算数据,有读取和编辑两个操作(类似 ByteBuffer 直接指向对应数据)。读取对象交给上层计算逻辑后,需要避免内存被编辑因此上读锁,但是这个锁不能由申请读写对象的线程释放,因为上层很难确保,计算的和申请的是同一个线程,因此重入锁或者 mutex 语义是无法满足的。

简单来说就是:一个资源,只能一个更改,多个读取。但是不需要 mutex 语义中所有者的概念,也就是任何线程都可以释放锁。类似是 JUC 中读写锁中去掉线程拥有者。

我的需求没有锁的拥有者是典型信号量的场景,因此目前我是通过信号量来完成的。但是处于安全考虑,我还是想直接使用成熟可靠的实现方案。有朋友有推荐的吗?
358 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX