java - 为什么我的线程程序只使用一个 CPU?

标签 java multithreading cpu

我有一个执行长时间计算的程序,所以我想加快它的性能。所以我现在尝试启动 3 个线程,但是 java.exe 仍然占用 25% 的 CPU 使用率(所以,只使用了一个 CPU),即使我尝试使用 它仍然存在>.setPriority(Thread.MAX_PRIORITY); 并实时设置 java.exe 的优先级 (24)。我尝试使用 RealtimeThread 但它似乎运行得更慢。如果每个线程分配给一个处理器就完美了,总CPU使用率提高到75%,但我不知道该怎么做。这就是我的代码现在的样子:

Thread g1 = new MyThread(i,j);
g1.setPriority(Thread.MAX_PRIORITY);
g1.run();
Thread g2 = new MyThread(j,i);
g2.setPriority(Thread.MAX_PRIORITY);
g2.run();
Thread g3 = new MyThread(i,j);
g3.setPriority(Thread.MAX_PRIORITY);
g3.run();
if (g1.isAlive()) {
        g1.join();
}
if (g2.isAlive()) {
        g2.join();
}
if (g3.isAlive()) {
        g3.join();
}

最佳答案

您实际上并没有使用线程。

您需要调用 .start(),而不是 .run()

关于java - 为什么我的线程程序只使用一个 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507041/

相关文章:

java - jMonkeyEngine 忽略 Nifty GUI 形式的键盘输入

java - 在没有 HDFS 的情况下执行 Hadoop 代码

java - Couchbase Java SDK 中有没有办法不列出要连接的节点?

c - 从 C 中的两个线程访问变量

linux - 如何在 Linux 中打印处理器的一个特定核心上列出的所有进程?

java - 如何使用 perfmon 记录 tomcat 进程的 CPU 和内存使用情况

c++ - 对于 ~95% 写入/5% 读取线程安全的 unordered_map 是否有简单的解决方案?

java - 屏幕加载 Android 上的随机 TextView

ffmpeg - ffmpeg 的硬件加速不起作用

android - 在 java 中以编程方式获得 android 设备上的 root 用户权限以更改 scaling_governor