Java マルチスレッド プログラミングは、最新のソフトウェア開発において不可欠なスキルであり、システムの同時実行パフォーマンスと応答速度を向上させることができます。実際の開発では、多くの場合、多数のスレッドを管理および制御する必要があります。重要な同時プログラミング ツールとして、スレッド プールはスレッドを効率的に管理し、リソース使用率を向上させるのに役立ちます。
この記事では、Java で一般的に使用される 4 つのスレッド プール作成方法を紹介し、読者がスレッド プールの使用法をすぐに習得できるように具体的なコード例を示します。
1.FixedThreadPool (固定サイズのスレッド プール)
FixedThreadPool は、固定数のコア スレッド、無制限の最大スレッド数、および無効なスレッドを持つスレッド プールです。アイドルタイム。タスクを送信するとき、スレッド プールにアイドル状態のスレッドがある場合はすぐに実行されますが、アイドル状態のスレッドがない場合、タスクはブロッキング キューに入って待機します。固定サイズのスレッド プールは、長期にわたる固定数のタスクの実行に適しています。
次は、FixedThreadPool を使用してスレッド プールを作成するサンプル コードです:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class FixedThreadPoolExample { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(5); for (int i = 0; i < 10; i++) { final int taskId = i; executorService.execute(new Runnable() { public void run() { System.out.println("Task " + taskId + " is running."); } }); } executorService.shutdown(); } }
2. CachedThreadPool (キャッシュされたスレッド プール)
CachedThreadPool は、コア スレッド 番号が 0、スレッドの最大数が無制限、スレッド アイドル時間が 60 秒のスレッド プール。タスクを送信するとき、スレッド プールにアイドル状態のスレッドがある場合はすぐに実行され、アイドル状態のスレッドがない場合は新しいスレッドが作成されます。スレッドが 60 秒を超えてアイドル状態になると、スレッドは終了され、スレッド プールから削除されます。キャッシュ スレッド プールは、多数の短期タスクの実行に適しており、要求に応じてスレッドを動的に作成および破棄できます。
次は、CachedThreadPool を使用してスレッド プールを作成するサンプル コードです:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CachedThreadPoolExample { public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int taskId = i; executorService.execute(new Runnable() { public void run() { System.out.println("Task " + taskId + " is running."); } }); } executorService.shutdown(); } }
3. ScheduledThreadPool (スケジュールされたスレッド プール)
ScheduledThreadPool は、コアスレッド スケジュールされたタスクまたは定期的なタスクを実行するために使用される、固定数および無制限の最大スレッド数を持つスレッド プール。スレッドプールは内部に遅延キューを保持し、タスクの遅延時間に応じて順序良くタスクを処理します。
次は、ScheduledThreadPool を使用してスレッド プールを作成し、スケジュールされたタスクを実行するサンプル コードです:
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledThreadPoolExample { public static void main(String[] args) { ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3); executorService.scheduleAtFixedRate(new Runnable() { public void run() { System.out.println("Task 1 is running."); } }, 0, 1, TimeUnit.SECONDS); executorService.scheduleWithFixedDelay(new Runnable() { public void run() { System.out.println("Task 2 is running."); } }, 0, 1, TimeUnit.SECONDS); executorService.shutdown(); } }
4. SingleThreadExecutor (シングル スレッド スレッド プール)
SingleThreadExecutor は、スレッドのコア数が 1、スレッドの最大数が 1、および無効なスレッド アイドル時間を持つスレッド プールです。すべてのタスクは、同じスレッド内で先入れ先出しの順序でシリアルに実行されます。シングルスレッドのスレッド プールは、タスクを特定の順序とシーケンスで実行する必要があるシナリオに適しています。
以下は、SingleThreadExecutor を使用してスレッド プールを作成するためのサンプル コードです:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class SingleThreadExecutorExample { public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int taskId = i; executorService.execute(new Runnable() { public void run() { System.out.println("Task " + taskId + " is running."); } }); } executorService.shutdown(); } }
上記の 4 つのスレッド プール作成方法をマスターすることで、さまざまなシナリオに応じて適切なスレッド プールを選択できます。これにより、プログラムの同時実行パフォーマンスと応答速度が向上します。実際の開発では、スレッド プールの利点を最大限に発揮するために、スレッド セーフティの問題や適切なスレッド プール パラメータ設定にも注意を払う必要があります。
この記事で提供されるコード例と説明が、読者が Java マルチスレッド プログラミングでスレッド プールを使用するスキルをすぐに習得し、スレッド プールをより効率的に使用してプログラムのパフォーマンスを向上できるようになることを願っています。実際の開発。
以上がJava マルチスレッド プログラミングをマスターするための鍵: 4 つのスレッド プールの作成方法を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。