gpt4 book ai didi

Java-同步

转载 作者:行者123 更新时间:2023-12-01 19:56:00 29 4
gpt4 key购买 nike

我研究线程同步。当我有这个例子时:

class A {
public synchronized void methodA(){

}

public synchronized void methodB(){

}
}

class B {
private final Object objectA = new Object();
private final Object objectB = new Object();

public void methodA(){
synchronized(objectA){

}
}

public void methodB(){
synchronized(objectB){

}
}
}

在第一种情况下,两个方法的所有调用都必须序列化,这是正确的吗?方法不能同时调用,当前只能调用一组“同步”方法中的一个方法。

第二种情况是在对象级别。当前只有一个线程可以调用一个方法。但是方法A和B可以同时调用吗?

最佳答案

您对第二部分的看法是正确的,但第一部分需要一些澄清。

class A {
public synchronized void methodA(){

}

public synchronized void methodB(){

}
}

此代码与下一个代码的作用相同

class A {
public void methodA(){
synchronized (this) {
}
}

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

因此,在一个对象上只能同时调用一个方法。相同或其他方法的其他调用将等待。但在不同的对象上可以调用任何方法。

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

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