JavaのThreadPoolを使ってマルチスレッドをどのように起動するか

Java でマルチスレッドを実行するには、スレッドプールを利用する方法があります。以下にスレッドプールを使用したマルチスレッド処理のサンプルコードを示します。

まずは、java.util.concurrent.ExecutorService と java.util.concurrent.Executors クラス をインポートする必要があります。

その後、 Executors.newFixedThreadPool()メソッドを使用して、固定長のスレッドプールを作成することができます。

次に、Submit() メソッドを使用して、実行するタスクを表す Runnable オブジェクトをスレッドプールに送信できます。スレッドプールはそのタスクを自動的に実行するための空きスレッドを割り当てます。

最後に、shutdown() メソッドを使用してスレッドプールをシャットダウンして、すべてのタスクが完了したことを確認します。

この例では完了したコードが提示されています。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小为 5 的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 向线程池提交 10 个任务
for (int i = 0; i < 10; i++) {
Runnable task = new MyTask(i);
executor.submit(task);
}
// 关闭线程池
executor.shutdown();
}
}
class MyTask implements Runnable {
private int taskId;
public MyTask(int taskId) {
this.taskId = taskId;
}
@Override
public void run() {
System.out.println("Task ID : " + taskId + " executed by " + Thread.currentThread().getName());
}
}

上記のコードは、5 つの固定サイズスレッドプールを作成し、スレッドプールに 10 個のタスク(MyTask クラスのインスタンス)を送信します。各タスクは空きスレッドで実行されます。結果は次のようになります。

Task ID : 0 executed by pool-1-thread-1
Task ID : 1 executed by pool-1-thread-2
Task ID : 2 executed by pool-1-thread-3
Task ID : 3 executed by pool-1-thread-4
Task ID : 4 executed by pool-1-thread-5
Task ID : 5 executed by pool-1-thread-2
Task ID : 6 executed by pool-1-thread-3
Task ID : 7 executed by pool-1-thread-1
Task ID : 8 executed by pool-1-thread-4
Task ID : 9 executed by pool-1-thread-5

これはそのタスクが異なるスレッドで並列に実行されていることを示しています。

bannerAds