我想运行一个使用 Thread 类的 Java 程序,这样每个 Thread.run() 都会导致运行一个正确的内核线程。有没有办法通过将一些命令行参数传递给 Java VM 来实现这一点?我在 Windows 机器上使用 Java 1.5 SDK(和 jre1.5.0_18)运行 Eclipse。我尝试使用 -XX:+UseBoundThreads,但任务管理器似乎在同一个内核上运行两个线程(我使用的是双核机器)(另一个内核空闲)。
谢谢。
我想运行一个使用 Thread 类的 Java 程序,这样每个 Thread.run() 都会导致运行一个正确的内核线程。有没有办法通过将一些命令行参数传递给 Java VM 来实现这一点?我在 Windows 机器上使用 Java 1.5 SDK(和 jre1.5.0_18)运行 Eclipse。我尝试使用 -XX:+UseBoundThreads,但任务管理器似乎在同一个内核上运行两个线程(我使用的是双核机器)(另一个内核空闲)。
谢谢。
我想运行一个使用 Thread 类的 Java 程序,这样每个 Thread.run() 都会导致运行一个正确的内核线程。
如果您调用Thread.run()
,则根本不会创建单独的线程,而是在主线程中按顺序执行所有内容。你要做的是调用Thread.start()
,它将创建一个新线程并让它执行Thread.run()
。
Windows JVM 始终使用本机线程。但是,由内核决定在哪个内核上运行每个线程。绝对不能保证启动两个线程将在 2 个内核之间共享。
顺便说一句,我认为 UseBoundThreads 选项仅适用于 solaris,但我对此不太确定。
您可以附加 jvisualvm 以查看哪些线程正在运行以及它们使用了多少 CPU。
谢谢大家..虽然我不知道正确的答案,但目前,Eclipse 中的 Java 1.6 给我的双核性能几乎是我正在查看的代码库的两倍......此外,jvisualvm 的效果很好探查器..谢谢!