次のことを行うスレッドを調整しようとしています。
スレッドが 1 つだけのスレッド プール[CorePoolSize =0, maxPoolSize = 1]
使用されるキューはArrayBlockingQueue です
Quesize = 20
BackGround:
スレッドは、リクエストを読み取って操作を実行しようとします。
しかし、最終的にはリクエストが非常に増加したため、スレッドは常にビジー状態になり、1 つの CPU を消費してリソースを大量に消費します。
私がやりたいことは、代わりにリクエストを一定間隔でサンプリングして処理することです。他のリクエストは安全に無視できます。
私がしなければならないことは、「操作」機能にスリープを入れて、タスクごとにスレッドがしばらくスリープしてCPUを解放することです。
質問:
ただし、次の要素を読み取る前に、基本的にそれ自体がしばらくスリープするキューを使用する方法があるかどうか疑問に思っていました。実行中にタスクをスリープさせ、実行を未完了のままにしておくのは、私には最適とは思えないため、これは理想的です。
他にもお勧めのタスクがあれば教えてください
ありがとう。
編集:ここにフォローアップの質問を追加し 、maxpool サイズを 1 に修正しました [急いで書いた] ..指摘してくれてありがとう tim。