gpt4 book ai didi

java - 带有 try 和 finally 的同步方法的行为

转载 作者:行者123 更新时间:2023-12-04 05:45:23 24 4
gpt4 key购买 nike

假设以下方法:

public synchronized void a(){
try{
System.out.println("a");
return;
}finally{
System.out.println("a, finally");
}
}

我知道即使在 return 语句之后仍然会执行 finally 块。甚至可以“覆盖”返回值!
但我的问题是,该方法会在 return 语句之后还是 finally 之后解锁?

最佳答案

returnfinally 之前未执行块已经完成,因为整个方法是synchronized , 直到 finally 之后才会释放锁块已经完成。

如果您需要在异常而不是从方法返回时释放锁,您可以嵌套您的 synchronized try 内的块/finally块:

public void a(){
try {
synchronized (this) {
System.out.println("a");
return;
}
} finally{
System.out.println("a, finally");
}
}

关于java - 带有 try 和 finally 的同步方法的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10743285/

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