-3

私は、それぞれ 7 つのスレッドの 4 つのグループがある状況にあります。私のCPU(コアi7)は8スレッドを処理できるはずなので、各グループを一度に1つずつ調べて7スレッドを実行し、次に2番目のグループに移動して7スレッドを実行し、次に3番目と3番目のスレッドを実行することを検討しています。ユーザーが停止コマンドを送信するまで、同じ方法で 4 番目のグループ、次に最初のグループに戻ります。

私の質問は、7 つのスレッドの各グループが処理を終了したら、それらのスレッドをアイドル状態のままにしておくべきですか、それとも完全にシャットダウンして、次の反復で 7 つのスレッドの新しいグループを再起動するべきですか? どちらの方法が速くなりますか? これは非常に高速なアプリ用であるため、すべてをできるだけ迅速に行う必要があります。

を使用してFixedThreadPool、7 つのスレッドの各グループを管理します。そのinvokeAll()ため、それらをそのままにしておく (おそらくアイドル状態にする) か、shutdown()invokeAll()スレッドプールの後に次の反復で新しいスレッド プールを開始することができます。

どちらの方法が速くなりますか?

4

4 に答える 4

1

スレッドを手動でスケジュールする必要はありません。一度に 28 個のスレッドすべてを開始します。これは遅くはありませんが、より高速になる可能性があります。

于 2013-10-07T16:58:30.723 に答える