gpt4 book ai didi

java - 同步方法会锁定其中的所有方法吗?

转载 作者:行者123 更新时间:2023-11-30 06:45:39 26 4
gpt4 key购买 nike

我想了解如果我将一个方法标记为同步会发生什么,以及该方法内部的调用会发生什么。我的 SyncClass 是从外部网络服务调用的。这些网络服务调用可以发生任意次数。示例:

//Webservice talks to this class.
class SyncClass {
public synchronized void syncMethod() {
Service service = new Service();
service.serviceBlock();
}
}

class Service{

public void serviceBlock(){
doManyThings(){
// validation
// service logic
SaveService save = new SaveService();
save.saveMe();
}
}

}

class SaveService {

public void saveMe(){
//many operations
public methodA();
public methodB();
public methodC();
}
}

如果我的应用程序中有调用直接调用 methodA()、methodB()、methodC() 等,会发生什么情况。可以从其他地方调用这些方法。如果 syncMethod 已经从 webservice 获取了锁,它是否也会锁定这 3 个方法?

最佳答案

更准确地说,syncMethod 将锁定实例(SyncClass)。任何 synchronized 方法或 block 如果应用于同一实例,都会阻塞。在您的情况下,ServiceserviceBlockSyncClass 无关,所以不会,它不会阻塞。

关于java - 同步方法会锁定其中的所有方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48502599/

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