gpt4 book ai didi

java - `obj` 中的 `synchronized(obj) {...}` 参数的目的是什么?

转载 作者:行者123 更新时间:2023-12-01 17:49:33 24 4
gpt4 key购买 nike

这两者有什么区别?

public void someMethod(){

synchronized(this){
//some code

}
}

public void someMethod(){

Object lock = new Object();
synchronized(lock){
//some code

}

}

另外请澄清一下,如果我在 Synchronize 括号内提到一个对象,是否意味着我将能够对该特定对象使用线程安全?

最佳答案

使用synchronized关键字时,需要一个对象作为监视器锁。只有使用相同监视器锁的线程才会被同步。

  • synchronized(this)在当前实例上同步。检查 this Java 中的关键字。

    • 调用 someMethod 时在不同线程的同一个实例上,这些线程将被同步。
    • 调用 someMethod 时在来自不同线程的不同实例上,这些线程不会同步。
  • 第二个版本没有任何同步功能,因为每个线程都有自己的方法堆栈,并且它们会创建自己的Object lock在他们的方法堆栈上。

关于java - `obj` 中的 `synchronized(obj) {...}` 参数的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914726/

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