Java получает процент использования ЦП ядер

Я хочу получить общее использование ЦП всех ядер. Мне нужно напечатать что-то вроде этого:

Cpu 1: 33%
Cpu 2: 12%
Cpu 3: 66%
Cpu 4: 100%

Я пробовал использовать этот код:

OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
int availableProcessors = operatingSystemMXBean.getAvailableProcessors();
long prevUpTime = runtimeMXBean.getUptime();
long prevProcessCpuTime = operatingSystemMXBean.getProcessCpuTime();
double cpuUsage;
try
{
    Thread.sleep(500);
}
catch (Exception ignored) { }

operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long upTime = runtimeMXBean.getUptime();
long processCpuTime = operatingSystemMXBean.getProcessCpuTime();
long elapsedCpu = processCpuTime - prevProcessCpuTime;
long elapsedTime = upTime - prevUpTime;

cpuUsage = Math.min(99F, elapsedCpu / (elapsedTime * 10000F * availableProcessors));
System.out.println("Java CPU: " + cpuUsage);

Но этот код дает мне такой вывод: Java CPU: 27.504911422729492. Может кто-то помочь мне с этим?

Чего вы ждали?

Prashant 05.06.2018 11:44

Ну и что? вы хотите отформатировать двойной?

jhamon 05.06.2018 11:45

Мне нужно получить информацию обо всех ядрах и их загрузке. Этот фрагмент кода дает мне информацию об одном ядре. Мне нужно что-то вроде команды "htop" в среде Linux.

Abzelhan 05.06.2018 11:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
2 716
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

JavaSysMon использует подход, специфичный для ОС, например. в Linux он анализирует /proc/cpuinfo для перечисления ядер. Для определения фактического использования ядра ЦП он анализирует файл /proc/stat (см. LinuxMonitor).

Спасибо! Не могли бы вы предоставить фрагмент кода с выводом 4 ядер и их использования?

Abzelhan 05.06.2018 12:14

Другие вопросы по теме