对于 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自旋锁使用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 10杀直播素材,动态直播背景素材
- 七台河健身小程序商城,七台河健身操第四集
- chatgpt上线,chat client
- 显卡h6770怎么供电,n760显卡供电方法
- go语言错误怎么办 go语言问题集
- 怎么调电视上的节目,电视怎么样调到电视上的节目
- 神舟z6显卡怎么切换,神舟z8显卡切换
- 包含学postgresql还是mysql的词条
- php登录数据 php登录数据库