java自旋锁代码大全 java自旋锁使用( 五 )


对于 ReentrantLock,它是可重入的独占锁,内部的 Sync 类实现了 tryAcquire(int)、tryRelease(int) 方法,并用状态的值来表示重入次数,加锁或重入锁时状态加 1,释放锁时状态减 1,状态值等于 0 表示锁空闲 。
对于 CountDownLatch,它是一个关卡,在条件满足前阻塞所有等待线程 , 条件满足后允许所有线程通过 。内部类 Sync 把状态初始化为大于 0 的某个值 , 当状态大于 0 时所有wait线程阻塞,每调用一次 countDown 方法就把状态值减 1,减为 0 时允许所有线程通过 。利用了AQS的共享模式 。
现在,要用AQS来实现 ReentrantReadWriteLock 。
一点思考问题
* AQS只有一个状态,那么如何表示 多个读锁 与 单个写锁 呢?
* ReentrantLock 里,状态值表示重入计数 , 现在如何在AQS里表示每个读锁、写锁的重入次数呢?
* 如何实现读锁、写锁的公平性呢?
【java自旋锁代码大全 java自旋锁使用】关于java自旋锁代码大全和java自旋锁使用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读