gpt4 book ai didi

java - 同步块(synchronized block)

转载 作者:行者123 更新时间:2023-12-01 20:15:04 27 4
gpt4 key购买 nike

我是线程的新手,特别是 synchronized 关键字。

据我了解,如果线程尝试访问另一个线程已拥有锁的同步块(synchronized block),则该线程的状态会更改为 BLOCKED

供引用:

synchronized (objA){
objA.methodA();
}

//some code

objA.methodB();

我的问题是另一个线程是否可以通过另一个独立方法(本例中的methodB())更改对象objA。或者拥有锁是否意味着其他线程不能以任何方式访问/更改 objA ,即更改代码是否位于同步块(synchronized block)内?

最佳答案

没有。拥有监视器(锁)的唯一意义是,在您放弃它之前,没有其他线程也可以拥有它。

当然,这确实意味着它们无法在 objA 上调用任何同步方法(因为这需要获取锁),因此如果 objA 上的所有修改方法都是同步的(或者使用synchronized (this) {...} block ),然后“否”变成"is"。

但是,如果 methodB 从未尝试锁定 this(通过同步或使用同步块(synchronized block)),则不会对 objA 进行任何锁定 将阻止对 objA.methodB() 的调用。

关于java - 同步块(synchronized block),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995295/

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