伙计们,任何人都可以给出一个简单实用的例子LockSupport
和AbstractQueuedSynchronizer
使用方法吗?javadocs中给出的示例非常紧张.
Semaphore
我理解许可证的使用.
谢谢你的回复.
Joh*_*int 15
如果你在谈论使用锁定机制(甚至同步障碍),只需使用一个java.util.concurrent.Lock
.明显的建议是用户a ReentrantLock
委托给a Synch
.同步是AQS,而AQS又使用LockSupport
.
这一切都在你的掩护下完成.
编辑:
不,让我们AbstractQueuedSynchronizer
回顾一下(AQS)的实际用途.
虽然并发构造在它们的使用方面可能非常不同,但它们可以具有相同的底层函数.
即在某种情况下停放此线程.在某些其他情况下唤醒一个线程.
这是一组非常广泛的指令,但很明显,大多数并发结构需要一些能够为它们处理这些操作的通用功能.输入AQS.有五个主要的同步障碍.
ReentrantLock
ReadLock
WriteLock
Semaphore
CountDownLatch
现在,所有这五种结构在使用时都有不同的规则.A CountdownLatch
可以允许许多线程同时运行但强制一个(或多个)线程等待,直到所述锁存器上至少n个线程倒计数.
ReentrantLock
强制一次只强制一个线程进入一个关键部分,并排队等待所有其他线程等待它完成.
ReadLock
允许任意数量的读取线程进入临界区,直到获得写锁定为止.
这些例子可以继续,但这里的大图是他们都使用AQS.这是因为它们能够使用AQS提供的原始函数,并在其上实现更复杂的功能.AQS允许你停放unpark并唤醒线程(如果需要可以中断),但这样你可以支持许多复杂的功能.
归档时间: |
|
查看次数: |
5119 次 |
最近记录: |