【问题标题】:Native threads using Java VM in Eclipse在 Eclipse 中使用 Java VM 的本机线程
【发布时间】:2009-07-13 09:05:53
【问题描述】:

我想运行一个使用 Thread 类的 Java 程序,这样每个 Thread.run() 都会导致运行一个正确的内核线程。有没有办法通过将一些命令行参数传递给 Java VM 来实现这一点?我在 Windows 机器上使用 Java 1.5 SDK(和 jre1.5.0_18)运行 Eclipse。我尝试使用-XX:+UseBoundThreads,但任务管理器似乎在同一个内核上运行两个线程(我使用的是双核机器)(另一个内核空闲)。

谢谢。

【问题讨论】:

    标签: java multithreading native


    【解决方案1】:

    我想运行一个 Java 程序 使用 Thread 类使得 每个 Thread.run() 导致运行一个 正确的内核线程。

    如果您调用Thread.run(),则根本不会创建单独的线程,而是在主线程中按顺序执行所有内容。你要做的就是调用Thread.start(),它会创建一个新线程并让它执行Thread.run()

    【讨论】:

    • 对 Thread.run() 感到抱歉:我实际上是在代码中调用 Thread.start()。我在写这个问题时把 run() 和 start() 搞混了。
    【解决方案2】:

    Windows JVM 始终使用本机线程。但是,由内核决定在哪个内核上运行每个线程。绝对不能保证启动两个线程将在 2 个内核之间共享。

    顺便说一下,我认为 UseBoundThreads 选项仅适用于 solaris,但我不太确定。

    【讨论】:

      【解决方案3】:

      您可以附加 jvisualvm 以查看哪些线程正在运行以及它们使用了多少 CPU。

      【讨论】:

        【解决方案4】:

        谢谢各位.. 虽然我不知道正确的答案,但目前,Eclipse 中的 Java 1.6 给我的双核性能几乎是我正在查看的代码库的两倍......另外,jvisualvm非常适合作为分析器..谢谢!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-02
          • 2011-07-08
          • 2010-09-07
          • 1970-01-01
          • 2011-04-23
          • 2013-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多