2016-05-15 4 views
0

Я писал приложение для умножения матриц.Java Single Thread Использование ЦП и многопоточное использование ЦП

Я сделал это и посмотрел монитор ресурсов для сравнения.

Прежде всего

  1. 3000x3000 матрицах умножаются.
  2. Одиночная резьба была медленнее, чем многопоточная
  3. Когда я проверяю монитор ресурсов Windows, я вижу, что многопоточное приложение имеет больше потоков, чем однопоточные. Я проверил «javaw.exe», и даже если писать однопоточное приложение, у него больше потоков, чем у одного. Это не обо мне. Речь идет о «javaw.exe». Но длинный рассказ короткий, javaw с одной нитью показал - например - 16 потоков. Многопоточность показала - например, - 24.
  4. В то время как многопоточное приложение работало, использование ЦП составляло почти 100%. Большинство из них относятся к «javaw.exe». Но в однопоточном приложении использование было около 30-35%

У меня есть процессор i5. Двухъядерный. 4 ядра - логические.

Когда я проверяю монитор ресурсов Windows, для приложения с несколькими потоками использование CPU 0-1-2-3 было почти на 100%, снова.

Но в однопользовательском приложении CPU 0-1-2-3 все еще использовался. Около того же процента, но даже не близко к 100%.

Здесь идет мой вопрос. Когда я выполнял однопоточное приложение, которое использовало другие ядра? Конечно, любой другой процесс может их использовать. Или даже сам «javaw.exe» (я сказал себе, что он многопоточен). Но есть ли вероятность того, что JVM выполнит мой однопоточный процесс как многопоточный?

+1

JVM всегда выполняет несколько потоков (например, поток GC). –

+0

Да, я подумал. Спасибо, что исправил меня. Я думаю, что нет возможности конвертировать однопоточное приложение в многопоточное JVM, верно? – Diga

ответ

1

Но есть ли вероятность того, что JVM выполнит мой единственный процесс с резьбой в виде многопоточной резьбы?

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

+0

Спасибо за ваш ответ. Я знаю, что это не имеет никакого смысла. Но я хотел дважды проверить. – Diga

Смежные вопросы