gpt4 book ai didi

java - 如何计算忽略等待其他线程的时间的程序

转载 作者:行者123 更新时间:2023-11-29 09:29:19 25 4
gpt4 key购买 nike

假设我有以下程序:

public class ProgramA {
public void doSomething(ProgramC c) {
c.doSomething();
// Do something else that takes 5 seconds.
}
}

public class ProgramB {
public void doSomething(ProgramC c) {
c.doSomething();
// Do something else that takes 2 seconds.
}
}

public class ProgramC {
public synchronized void doSomething() {
// Do something that takes 10 seconds
}
}

我想给程序 A 和程序 B 计时,看看它们用了多长时间(使用 Guava 的秒表或类似工具)。串行运行时,我得到了预期的 15s 和 12s。但是,当并行运行时,我得到例如15s和22s因为程序B花时间等待程序C的锁。

有没有办法忽略以这种方式阻塞的时间并获得与串行运行时相同的时间?更有帮助的是分割,例如“程序 B 耗时 22 秒,其中 10 秒阻塞在其他线程上”

最佳答案

如果你想在线程级别监控它,你可以调用 getState() Thread 对象,与 RUNNABLE 相比,查看每个 Thread 有多长时间处于 BLOCKED state 状态。

关于java - 如何计算忽略等待其他线程的时间的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28676466/

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