关于aqs:AQS场景共享锁和独占锁4

29次阅读

共计 1083 个字符,预计需要花费 3 分钟才能阅读完成。

1、java 中,共享锁有哪些

Java 中,常见的共享锁包含读写锁(ReentrantReadWriteLock)和计数器(CountDownLatch、CyclicBarrier、Semaphore 等)等。

1)读写锁

读写锁是一种非凡的锁,它容许多个线程同时读取共享资源,但只容许一个线程写入共享资源。ReentrantReadWriteLock 是 Java 中实现读写锁的一种形式,它通过保护两个锁来实现读写锁的性能,即读锁和写锁。读锁能够同时被多个线程获取,而写锁只能被一个线程获取。

2)计数器

计数器是一种用于管制并发拜访的同步工具,它容许多个线程并发地访问共享资源,但须要满足肯定的条件能力继续执行。常见的计数器包含 CountDownLatch、CyclicBarrier 和 Semaphore。CountDownLatch 是一种基于计数的同步工具,它能够让一个或多个线程期待一个或多个事件的产生。CyclicBarrier 是一种栅栏同步工具,它能够让多个线程在同一个工夫点上期待。Semaphore 是一种计数信号量,它能够管制同时访问共享资源的线程数量。

2、java 中,有哪些独占锁

ava 中常见的独占锁包含 synchronized、ReentrantLock 和 ReentrantReadWriteLock 的写锁等。它们的特点是同一时间只能有一个线程持有锁,其余线程无法访问被锁定的代码块或资源。

1)synchronized

synchronized 是 Java 中最根本的同步机制之一,它是一种独占锁,只能被一个线程持有。在 synchronized 关键字润饰的代码块或办法上,同一时刻只能有一个线程取得锁,其余线程须要期待取得锁的线程开释锁能力继续执行。

2)ReentrantLock

ReentrantLock 是 Java 中常见的独占锁实现之一,与 synchronized 相比,ReentrantLock 具备更高的灵活性和扩展性。ReentrantLock 能够设置偏心锁和非偏心锁,默认是非偏心锁。ReentrantLock 还反对可重入锁,即一个线程能够屡次获取同一个锁,而不会导致死锁。

3)ReentrantReadWriteLock

ReentrantReadWriteLock 是一种读写锁,读写锁容许多个线程同时读取共享资源,但只容许一个线程写入共享资源。在 ReentrantReadWriteLock 中,写锁是独占锁,即只能被一个线程持有,而读锁是共享锁,能够被多个线程同时持有。


AQS- 根本篇 (1)
AQS- 基本原理 17 问 (2)
AQS-Condition 对象的应用 (3)

正文完
 0