gpt4 book ai didi

Java 线程 - 同步代码

转载 作者:行者123 更新时间:2023-11-29 03:35:21 25 4
gpt4 key购买 nike

为什么一定要指定,哪个对象锁定了一个同步代码块?

您不必指定哪个对象锁定了同步方法,因为它总是被“this”锁定(我相信)。

我有两个问题:

  • 为什么你不能使用非静态对象来阻止非静态方法“这个”?
  • 为什么一定要指定被屏蔽的对象同步代码?

我已经阅读了 SCJP for Java 6 的第九章,但我仍然不清楚这一点。

我意识到这可能是一个基本问题,但我是线程的新手。

最佳答案

Why can't you block a none static method with an object other than 'this' ?

您可以:

public void foo() {
synchronized (lock) {
...
}
}

Why do you have to specify the object that has blocked synchronized code?

因为这就是语言设计者选择设计语言的方式。 synchronized,当用在实例方法上时,隐含地使用 this 作为锁。 synchronized 在 block 上使用时必须明确指定锁。

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

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