gpt4 book ai didi

java - java多线程中实例上获取的锁

转载 作者:行者123 更新时间:2023-12-02 00:45:45 24 4
gpt4 key购买 nike

我读到java中的锁是在实例(对象)的基础上获得的(在实例方法的情况下)
还可以在类的对象上获取锁(在静态方法的情况下)。

但我想知道特定对象一次可以获得多少个锁

一个对象可以同时拥有多个锁吗?
如果是,请举例说明。

请帮我理清我的概念。

最佳答案

每个同步块(synchronized block)仅针对一个对象。对象不会拥有锁。它是锁定对象以对其进行操作的执行线程。

始终在对象上获取锁。例如下面是可以获得锁的两个实例。第一个锁定类(对象)的实例。

Object obj = new Object();

synchronized(obj) {
workOnIt(obj);
}

第二个看起来像是锁定了一个类。但 Test.class 是我的 Test 类的 java.lang.Class 实例的特殊表示。

synchronized(Test.class) {
// call some static method here
}

关于java - java多线程中实例上获取的锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068061/

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