gpt4 book ai didi

Java线程模型

转载 作者:行者123 更新时间:2023-11-30 04:38:35 28 4
gpt4 key购买 nike

我有一个关于普通 Java 线程理论的问题。

线程 A 已锁定某个对象,例如 xObj。现在线程 B 如何知道线程 A 已经锁定了对象 xObj。

这是如何在 java 中实现的。

提前致谢。

感谢您的回答....在这里我想澄清...我不必实现这个。我关心的是Java是如何实现的。线程B如何知道有人已经实现了锁定了 Object。可能是 Object 类或其他类已经实现了此功能。

最佳答案

Thread A has taken a lock on some object, let say xObj. Now how does Thread B know that Thread A has already taken a lock on object xObj.

这取决于您所说的锁的类型。

  • 对于原始互斥体,一个线程无法测试另一个线程是否持有该互斥体,更不用说找出它是哪个线程了。 (但是它可以测试是否持有锁...)

  • Lock 接口(interface)同样不支持此功能。

  • ReentrantLock确实提供了一种方法来找出这一点:请参阅ReentrantLock.getOwner()。但请注意,这是一个 protected 方法,因此如果您想让该方法普遍可用,您需要创建 ReentrantLock 的子类。

    <
<小时/>

我也会质疑这种方法的值(value)。它只能告诉您在调用时哪个(如果有)线程拥有锁。片刻之后,所有者可能已经改变。

相比之下,Thread.holdsLock() 为您提供了可以信赖的信息...尽管该信息在大多数情况下没有用处。

关于Java线程模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12836829/

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