java - 让处理器旋转固定的 CPU 时间

标签 java concurrency cpu-usage

我正在寻找一种方法,让 CPU 旋转固定的 CPU 时间来模拟假“工作”,以便我可以测试一些并发算法。基本上,我正在寻找一种方法让线程执行需要 N 秒 CPU 时间的操作。

我最初的实现是这样的:

public void doWork() {
    long startTime = System.currentTimeMillis();
    while(System.currentTimeMillis() - startTime < mDurationMillis) {
        //Churn
    }
    System.out.println("Task " + mTaskId + " on thread " + Thread.currentThread().getId() + ": done work!");
}

但我很快意识到这只是测量实时时间,100 个此类任务的完成时间与单个处理器上的一个任务的完成时间大致相同。有没有办法测量线程运行时使用的 CPU 时间?

最佳答案

通过一点谷歌搜索,我发现了 ThreadMXBean interface这似乎有你需要的,以及 a usage example 。不过,我不是 Java 开发人员,所以请持保留态度。

关于java - 让处理器旋转固定的 CPU 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956639/

相关文章:

c++ - 现代x86硬件能否不将单个字节存储到内存中?

visual-studio-2013 - Visual Studio 2013 Update 2 最大化核心

java - 我如何使用trim()方法来完成这项工作?我需要读取txt文件,同时忽略空白行和以 "//"开头的行

java 。忽略/禁用按键功能但仍捕获按键事件

java - 如何通过二分搜索搜索 ArrayList 中的任何值

performance - Golang goroutine 在添加并发时变慢

java - 在池中的 Akka actor 实例之间共享可变数据

Tomcat占用CPU高

c# - 性能瓶颈 - 使用 Visual Studio

java - RMI:如果只有一个 JVM,则远程方法的参数是否必须实现可序列化?