java – LockSupport和AbstractQueuedSynchronizer使用的任何实际示例?

有人可以给出一个简单实用的LockSupport& AbstractQueuedSynchronizer使用? javadocs给出的例子相当紧张.

使用信号量许可证是我理解的.

感谢任何回应.

如果您谈论使用锁定机制(甚至同步障碍),只需使用java.util.concurrent.Lock.明显的建议是用户一个可以同步的ReentrantLock.同步是一个AQS,它依次使用LockSupport.

它全部在你的封面下完成.

编辑:

不要让我们回顾一下AbstractQueuedSynchronizer(AQS)的实际用途.

并发结构虽然可以有很大的不同,但它们的使用可以有相同的底层功能.

即在某些条件下停留这个线程.在某些其他条件下唤醒线程.

这是一个非常广泛的指令,但是很明显,大多数并发结构将需要一些常见的功能,能够为他们处理这些操作.进入AQS.有五个主要的同步障碍.

> ReentrantLock
> ReadLock
> WriteLock
>信号量
> CountDownLatch

现在,所有这五个结构在使用它们时都有非常不同的规则. CountdownLatch可以允许许多线程同时运行,但强制一个(或多个)线程等待,直到至少n个线程在所述锁存器上倒数.

ReentrantLock一次只强制一个线程进入关键部分,并排队所有其他线程等待完成.

ReadLock允许任意数量的读取线程进入关键部分,直到写入锁定为止.

这些例子可以继续下去,但是这里的大部分都是使用AQS.这是因为它们能够使用AQS提供的原始函数,并在其上实现更复杂的功能. AQS允许您停播并唤醒线程(如果需要可以中断),但是您可以支持许多复杂功能.

翻译自:https://stackoverflow.com/questions/3311811/any-practical-example-of-locksupport-abstractqueuedsynchronizer-use

转载注明原文:java – LockSupport和AbstractQueuedSynchronizer使用的任何实际示例?