代码之家  ›  专栏  ›  技术社区  ›  LB40

如何在多个内核上执行Java程序?

  •  0
  • LB40  · 技术社区  · 15 年前

    我有一个Java程序,我在一个BASH脚本的基础上运行一个循环(根据要编译的文件的数量来构建Linux内核)。

    因为JVM启动了几次,所以出现了性能问题…

    我所做的是在Java中实现一个包装器,它与我的BASH脚本一样,从一个文件读取一行,然后调用我以前的程序的主…这样,我只有一个JVM在运行…

    现在的问题是,我的盒子只有一个核心被使用,这是另一个性能问题…我是否必须启动一些线程,或者我可以使用相同的方法,但可以用不同的方式调用“前一个”主线程? 如果必须启动一些线程,如何在多个核心中分派它们?

    谢谢。。。

    3 回复  |  直到 15 年前
        1
  •  17
  •   skaffman    15 年前

    你的Java程序需要多线程,以便利用许多内核。

    例如,使用java.util.concurrent.executors创建线程池,将数据项封装为可运行的,并将可运行的提交给线程池。

        2
  •  3
  •   Eric Petroelje    15 年前

    冒着过于简单化的风险,让旧类实现runnable,获取main()中的内容并将其放入run(),然后用该类创建一个新线程并启动该线程。

    事实上,如果线程需要共享数据,可能会比这复杂得多,但是根据您所说的,您在这里所做的,看起来并不像它们那样。所以这可能真的很简单。

        3
  •  1
  •   Mr. Will    15 年前

    您将需要使您的程序多线程。你必须做一些学习来做到这一点,我建议你从 Java Concurrency Tutorial .