gpt4 book ai didi

java - 我对 Java 多线程的长期困惑。需要帮忙

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

我对多线程有这样的疑问,并且在许多采访中我都遇到过很多关于多线程的问题。

我谈了很多关于获取对象锁的内容。我的疑问是,当您有两个同步方法并且有两个线程想要访问这两个方法时,ThreadA 想要访问 MethodA,ThreadB 想要访问 MethodB。

现在这两个方法都在同一个对象中。但我常常说获取对象上的锁,但我没有听说过获取方法上的锁。现在两个线程可以并行访问MethodA和MethodB吗?我的假设是,一旦您获得了对象的锁,就没有其他线程在处理它。不是吗?

synchronized(XYZ.class) 的意义是什么?

最佳答案

不,他们不能。如果我理解正确的话,那么你的意思是:

class Foo {

public synchronized void methodA () {
doSmth ();
}

public synchronized void methodB () {
doSmthElse ();
}

}

在这种情况下,synchronized 修饰符等于:

class Foo {

public void methodA () {
synchronized (this) {
doSmth ();
}
}

public void methodB () {
synchronized (this) {
doSmthElse ();
}
}

}

这意味着每个 Foo 对象上的这 2 个方法之一中只能有 1 个线程同时工作。

And what is the significance synchronized(XYZ.class)?

这就是你在幕后所拥有的

class XYZ {
public static synchronized void someMethod () { ... }
}

关于java - 我对 Java 多线程的长期困惑。需要帮忙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260624/

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