这是一个创建于 1031 天前的主题,其中的信息可能已经有所发展或是发生改变。
本质上来说是需要一个互斥和共享的信号量,JUC 中貌似没有直接提供。
我的使用场景:一块内存空间,存放在需要计算数据,有读取和编辑两个操作(类似 ByteBuffer 直接指向对应数据)。读取对象交给上层计算逻辑后,需要避免内存被编辑因此上读锁,但是这个锁不能由申请读写对象的线程释放,因为上层很难确保,计算的和申请的是同一个线程,因此重入锁或者 mutex 语义是无法满足的。
简单来说就是:一个资源,只能一个更改,多个读取。但是不需要 mutex 语义中所有者的概念,也就是任何线程都可以释放锁。类似是 JUC 中读写锁中去掉线程拥有者。
我的需求没有锁的拥有者是典型信号量的场景,因此目前我是通过信号量来完成的。但是处于安全考虑,我还是想直接使用成熟可靠的实现方案。有朋友有推荐的吗?