具有昂贵参数的Java同步方法

标签 java synchronization

我有一个同步方法,似乎“使用”同步的时间比它应该的要长得多。看起来有点像;

public static synchronized void myMethod(MyParameter p) {
    //body (not expensive)
}

调用看起来像;

myMethod(generateParameter());

众所周知,generateParameter() 是一个非常昂贵(需要很长时间)的调用。我的想法是 myMethod 类上的互斥量在 generateParameter() 执行期间被阻塞,这是怎么回事?我发现它是一个不同的调试问题,但这似乎是正在发生的事情。

最佳答案

这不可能; generateParameter() 调用首先执行,然后将其结果作为参数提供给 myMethod 调用,然后 获取互斥锁。

是需要很长时间,还是无限期地被阻止? (死锁)

关于具有昂贵参数的Java同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287511/

相关文章:

java - 尝试获取 cljunit 中命名空间的 var 名称时出错

java - 计算行驶的距离(不是之间的距离)

mysql - 在 Mysql Workbench 中,Synchronize Model with Database 在哪里

java - wait() - java中的notify()机制以一种奇怪的方式发生故障

java - 有没有办法在 JAVAFX 上实现类似 "rendered"的属性?

java - Spring MVC 类似 AMQP 消息的处理

java - PL/SQL - 仅当记录不存在时插入记录

algorithm - 同步算法模式

javascript - 真正的同步ajax调用

firebase - Firestore 的 .info/serverTimeOffset?