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