несколько ядер используются одним потоком (> 25% загрузки ЦП на четырехъядерном процессоре)

Я только начал программировать на Java, и мне интересно, как компьютеры распределяют нагрузку на процессор. Я сделал очень простую программу, которая создает окно и перемещает прямоугольник и линию. Во время тестирования я посмотрел на диспетчер задач; Диспетчер задач сказал, что я использую ~ 1% своих процессоров. однако, когда я запустил свою программу, загрузка ЦП возросла до ~ 36% (я только запустил программу, ничего больше). Кто-нибудь может сказать мне, что здесь происходит, пожалуйста?

введите здесь описание изображения


person Heat Death    schedule 24.02.2015    source источник
comment
...заинтересованы в том, как компьютеры распределяют нагрузку на процессор. Компьютеры этого не делают. Операционные системы делают. То, что вас интересует, называется планированием. Алгоритм планирования операционной системы решает, какой поток будет выполняться и на каком процессоре. en.wikipedia.org/wiki/Scheduling_%28computing%29   -  person Solomon Slow    schedule 25.02.2015


Ответы (1)


Вы думаете, что ваша программа имеет только один поток, но на самом деле каждая Java-программа имеет множество потоков. Приложения с графическим интерфейсом имеют поток отправки событий, сборка мусора имеет собственный поток и т. д. Вы можете использовать профилировщик (например, VisualVM, который находится в JDK), чтобы увидеть все потоки в вашем приложении.

Или вы можете увидеть их программно, см. Получить список все потоки, запущенные в настоящее время в Java

person lbalazscs    schedule 24.02.2015