スレッドプールのスレッド数を制御するには、Java でどのようにすればよいですか?

Javaでは、ThreadPoolExecutorクラスを使用してスレッドプールのスレッド数を制御できます。ThreadPoolExecutorには、コアスレッド数、最大スレッド数、スレッドのアイドル時間などのスレッドプールのプロパティを設定するためのメソッドが用意されています。

サンプルコードを以下に記します

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个线程池,初始时有5个线程
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);
// 设置线程池的最大线程数量为10
executor.setMaximumPoolSize(10);
// 设置线程池的线程空闲时间为1分钟
executor.setKeepAliveTime(1, TimeUnit.MINUTES);
// 提交任务给线程池执行
executor.execute(new Task());
// 关闭线程池
executor.shutdown();
}
}
class Task implements Runnable {
@Override
public void run() {
System.out.println("Task executed by thread: " + Thread.currentThread().getName());
}
}

上のサンプルでは Executors.newFixedThreadPool() メソッドを使用して、初期スレッド数が 5 の固定サイズのスレッドプールを作成しています。その後、setMaximumPoolSize() メソッドを使用してスレッドプールの最大スレッド数を 10 に設定しています。最後に、execute() メソッドを使用してスレッドプールに実行するタスクを投げ、shutdown() メソッドでスレッドプールをシャットダウンしています。

ThreadPoolExecutorクラスを利用する場合は、ExecutorServiceオブジェクトをThreadPoolExecutorオブジェクトに変換してから、ThreadPoolExecutorクラスのメソッドを呼び出してスレッドプールの属性を制御する必要があります。

bannerAds