java的基本框架AbstractQueuedSynchronizer(简称AQS)是ReentrantLock的重要内部实现机制,ReentrantLock是Java并发包的关键组件,提供锁和同步的基本框架。与synchronized关键字不同,ReentrantLock是可重入锁,允许线程重复获取锁,而不会被自身阻塞。
Sync是ReentrantLock中的同步类,它有两种实现:FairSync(保证公平同步)和NonfairSync(不保证公平)。这两种实现形式代表了ReentrantLock内部发生的锁竞争的公平和不公平的概念。使用公平锁时,等待时间最长的线程会先获得锁,而非公平锁则允许跳队。也就是说,新到达的线程可以立即获得锁,而不必等待那些已经在等待的线程。
AQS 保持与锁定控制的实际状态同步的内部标志状态。最初,状态的值为 0。线程每次获取锁时,状态的值都会加 1。因此,状态表示线程已获取此锁的次数。这确保了线程可以重复获取锁,并且不会遇到任何死锁或其他同步问题。
另外AQS还提供了两种锁:独占锁和共享锁。独占锁是指一次只有一个线程可以获得锁,而共享锁则允许多个线程同时获得锁。这种可变性使 ReentrantLock 能够适应各种并发情况。
凭借AQS提供的同步机制、状态管理以及公平和非公平锁特性的组合,ReentrantLock提供了有效且通用的线程同步和锁组织。这就是为什么它在并发系统的 Java 编程中占有重要地位。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论