如何让Java使用机器上的所有CPU电源?

我有时用Java编写代码,我注意到有时它在多核机器上使用超过100%的CPU。 我现在在具有33个CPU(亚马逊的EC2)的多核机器上运行一些代码,我想让我的Java进程使用所有可用的CPU,这样它将具有非常高的机器利用率。 这是可能的,还是由Java来决定何时使用超过100%的CPU? 我不希望更改代码以使用multithreading。

如果不使用多个线程或进程(或运行一个进程以外的其他进程),您将无法在n核计算机上实现n * 100%的使用率。

操作系统决定在单个线程上运行每个用户程序,除非发出更多请求。 如果没有该请求,操作系统将很乐意让您在单个线程中运行您的代码,可能最大限度地延长整个CPU的周期 – 但它会让其他人保持开放状态。

如果您的程序没有显式multithreading(您自己不启动任何线程),那么它可以使用多个核心的唯一原因是因为您正在使用库的某些function,最终将工作委派给线程池。 显然你没有太多的控制权,所以你不能让它更有效。

关于利用S3实例中的所有CPU:您可以多次启动程序(例如,如果您有33个CPU,则启动33次)。 如果这是不可能的,你将不得不找出你的处理的哪个部分在线程池上创建工作并更改你的程序,以便它更多地(并行)。