gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:03 24 4
gpt4 key购买 nike

大佬们,谁能给个LockSupport & AbstractQueuedSynchronizer的简单实用例子? javadocs 中给出的示例很紧张。

我理解 Semaphore 许可的使用。

感谢您的回复。

最佳答案

如果您谈论使用锁定机制(甚至同步屏障),只需使用 java.util.concurrent.Lock。显而易见的建议是使用 ReentrantLock,它委托(delegate)给 Synch。同步是一个 AQS,它又使用 LockSupport

这一切都是在幕后为您完成的。

编辑:

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

虽然并发结构在用法上可能非常不同,但它们都可以具有相同的底层功能。

即在某些情况下停放此线程。在其他一些条件下唤醒线程。

这是一组非常广泛的指令,但很明显大多数并发结构都需要一些能够为它们处理这些操作的通用功能。输入 AQS。有五个主要的同步障碍。

  • 重入锁
  • ReadLock
  • 写锁
  • 信号量
  • CountDownLatch

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

ReentrantLock 一次只强制一个线程进入临界区,并让所有其他线程排队等待它完成。

ReadLock 允许任意数量的读线程进入临界区,直到获得写锁。

示例可以继续,但这里的大图是它们都使用 AQS。这是因为他们能够使用 AQS 提供的原始功能并在其之上实现更复杂的功能。 AQS 允许您停放、取消停放和唤醒线程(如果需要可以中断),但您可以通过这种方式支持许多复杂的功能。

关于java - LockSupport 和 AbstractQueuedSynchronizer 使用的任何实际示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3311811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com