如果您要谈论使用锁定机制(甚至同步屏障),请使用
java.util.concurrent.Lock。明显的建议是向
ReentrantLock代表的用户a
Synch。同步是一个AQS,它依次使用
LockSupport。
一切都在您的幕后完成。
编辑:
我们不讨论
AbstractQueuedSynchronizer(AQS)的实际用途。
尽管并发构造的用法可能非常不同,但它们都可以具有相同的基础功能。
即在某些条件下停放此线程。在其他情况下,唤醒线程。
这是一组非常广泛的指令,但是很显然,大多数并发结构都需要一些通用功能,这些功能才能为它们处理这些操作。输入AQS。有五个主要的同步障碍。
ReentrantLock
ReadLock
WriteLock
Semaphore
CountDownLatch
现在,所有这五个结构在使用它们时都具有非常不同的规则集。A
CountdownLatch可以允许许多线程同时运行,但可以强制一个(或多个)线程等待,直到至少n个线程在所述锁存器上递减计数为止。
ReentrantLock一次只强制一个线程进入关键部分,并将所有其他线程排队,以等待其完成。
ReadLock允许任意数量的读取线程进入临界区,直到获得写锁为止。
这些示例可以继续进行,但是这里的大背景是它们都使用AQS。这是因为他们能够使用AQS提供的原始功能,并在其之上实现更复杂的功能。AQS允许您停放和唤醒线程(如果需要,可以中断线程),但是可以支持许多复杂的功能。



