AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock。可就是说,ReentrantLock也是通过AQS来实现的,而自定义同步锁需要实现AQS框架中的tryAcquire()和tryRelease()方法或者tryAcquireShared()和tryReleaseShared()方法。
Q:公平锁是什么?加锁流程是什么?参考文献
A:公平锁是指在资源获取过程中,线程按照到来顺序排队使用资源的一种锁机制,而非公平锁则可能出现不按顺序的随机获取情况。
公平锁的加锁流程体现在tryAcquire()源码部分,当一个线程节点创建之后,它会判断当前是否有其他线程在等待以及资源是否可用,如果两个条件都满足,它则获取资源,如果不满足,它则乖乖排到队尾,等待被唤醒。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |