gpt4 book ai didi

java - 线程和同步

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

我对私有(private)锁的概念理解有点困难:

public class MyObject {
private final Object lock = new Object(); // private final lock object

public void mymethod() {
synchronized (lock) { // Locks on the private Object
// ...
}
}
}

在上面的代码中,在不同的对象上获取了锁,但当前对象中的代码由同步块(synchronized block)保护。现在,除了上面代码中的锁对象之外,它也可以是任何其他对象。我发现很难理解另一个对象上的锁如何与当前对象中的synchronized关键字相关。 IMO,它可能会导致一些恶意代码锁定任何对象。允许对其他对象进行锁定的依据是什么。

最佳答案

例如,您可以拥有一个管理两个列表的对象。

如果线程 A 可以更改列表 1,而线程 B 可以更改列表 2,那么您应该使用不同的锁,而不是在所属对象上进行同步。

本质上显式的锁允许对行为进行更细粒度的控制。

关于java - 线程和同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364990/

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