javaスレッド池:実行スレッド数を取得し、スレッドの起動速度を制御する方法
javaでは、Exectors.newFixedThreadPoolを使ってスレッドプールを作成して、新しいタスクをどんどん作成して、スレッド池で実行します。
タスクの提出時にスレッドがいっぱいになったら、タスクは一つの列に進みます。
この機構はいくつかの特定の場合に問題がある。今日はスレッドを作成するのがスレッドよりも速いし、スレッドが占有するメモリが多いので、メモリがすぐに破裂します。
一つの方法を考えたら、タスクを提出する前に、現在実行中のスレッドの数を確認してください。スレッドがいっぱいになっていない時だけタスクを提出してください。
コードは簡単です
タスクの提出時にスレッドがいっぱいになったら、タスクは一つの列に進みます。
この機構はいくつかの特定の場合に問題がある。今日はスレッドを作成するのがスレッドよりも速いし、スレッドが占有するメモリが多いので、メモリがすぐに破裂します。
一つの方法を考えたら、タスクを提出する前に、現在実行中のスレッドの数を確認してください。スレッドがいっぱいになっていない時だけタスクを提出してください。
コードは簡単です
int threadCount = ((ThreadPoolExecutor)executor).getActiveCount();
// System.out.println("running : " + threadCount);
while (threadCount == POOL_SIZE) {
TimeUnit.MILLISECONDS.sleep(1);
threadCount = ((ThreadPoolExecutor)executor).getActiveCount();
// System.out.println("running : " + threadCount);
}
executor.execute
以上のjavaスレッドの池:運行スレッド数を取得し、スレッドの起動速度を制御する方法は、小編集が皆さんに共有するすべての内容です。