我有一个Java程序,我在bash脚本中基于一个循环(根据要编译构建Linux内核的文件数)运行了数千次。
由于jvm多次启动,因此存在性能问题......
我所做的就是在java中实现一个与我的bash脚本相同的包装器,从文件读取一行然后调用我以前程序的主...这样,我只有一个jvm运行...
现在的问题是我的盒子只使用了一个核心,这是另一个性能问题......我是否必须启动一些线程或者我可以使用相同的方法但是可能以不同的方式调用“前”主体? 如果我必须启动一些线程,我如何在多个核心中发送它们?
感谢...
答案 0 :(得分:17)
您的java程序需要变为多线程,才能利用多个核心。
例如,使用java.util.concurrent.Executors创建一个线程池,将数据项封装为Runnable,并将Runnable提交给线程池。
答案 1 :(得分:3)
冒着过度简化它的风险,只需让你的旧类实现Runnable,接受main()中的内容并将其放入Run(),然后用该类创建一个新线程并启动该线程。
实际上,如果线程需要共享数据,它可能会比那更复杂,但根据你所说的你在这里所做的事情,它似乎并不像他们那样。所以它实际上可能就是那么容易。
答案 2 :(得分:1)
您需要使程序具有多线程。您将需要做一些学习,我建议您从Java Concurrency Tutorial开始。