Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ExecutorServiceについて

こんにちは。
ExecutorServiceについて伺いたいのですが。

マルチスレッドプログラムでExecutorServiceを使えば、API側で容易にスレッド管理してくれるとの事ですが、プレーンなスレッドで重い処理(例えば、画像生成)をさせた時など、すぐにCPUが100%に到達し、同時実行はいくつまでと指定しなければ、思うようにパフォーマンスが出ない、或いは固まってしまう現象に悩まされた事があります。

そもそもスレッドには、CPUの何パーセントまでリソース占有してよいとか、指定できるのでしょうか??

1スレッドを起こしたら、重い処理であれば、CPU100%リソースを占有してしまうものなのでしょうか?

リソースと言う表現自体おかしいかも知れませんが、メモリではなく、あくまでもCPUの占有率の管理を行いたいです。
ExecutorServiceで、それは可能でしょうか?

お聞かせ頂ければ幸いです。

1

回答

4173

閲覧

1件の回答

評価

0

マルチスレッドで速くなるのは、スレッドが何かを占有する
ことなく並列実行可能な場合であって、常に速くなるわけで
はない。
場合によってはシーケンシャルより遅くなる。

そもそも占有というのは、例えば割り込みできないロジック
とか、ブロッキングAPIを使ってるとか、まず実装上の話。
そのロジックをメインが動かすかワーカーが動かすかには関
係がない。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。