ホームページ >Java >&#&チュートリアル >Java マルチスレッドの原理とプログラミング手法を詳しく学びます。
Java マルチスレッドの基本概念とプログラミング スキルを包括的に理解する
オブジェクト指向プログラミングの世界では、Java 言語は、安定性とクロスプラットフォーム特性があり、人気のある選択肢です。マルチスレッド プログラミングは、Java アプリケーションのパフォーマンスを向上させる重要な手段の 1 つになっています。 Java マルチスレッドの基本概念とプログラミング スキルを理解すると、開発者がマルチスレッド テクノロジをより適切に適用してアプリケーションの同時パフォーマンスを向上させるのに役立ちます。
Thread クラスは、スレッドを作成するために継承できる Java のコア クラスです。 Thread クラスを継承するサブクラスは、run メソッドをオーバーライドし、スレッドがこのメソッドで実行する必要があるタスクを定義する必要があります。スレッド オブジェクトを作成した後、start メソッドを呼び出してスレッドを開始できます。
Runnable インターフェイスは、スレッドによって実行できるタスクを定義する機能インターフェイスです。 Runnable インターフェイスを実装するクラスは、run メソッドを実装し、スレッドがこのメソッドで実行する必要があるタスクを定義する必要があります。 Thread クラスの継承とは異なり、Java は多重継承をサポートしていないため、Runnable インターフェイスを実装するとクラスの柔軟性が高まります。
サンプル コード:
public class Counter { private int count; public synchronized void increment() { count++; } }
2.2 スレッド通信
スレッド通信を使用すると、スレッドが互いに連携してタスクを一緒に完了できます。 Java には、スレッド間の通信を実装するために、wait、notify、notifyAll の 3 つのメソッドが用意されています。このうち、wait メソッドは、notify メソッドまたはnotifyAll メソッドを呼び出す他のスレッドによってウェイクアップされるまでスレッドを待機状態にし、notify メソッドは待機中のスレッドをウェイクアップし、notifyAll メソッドは待機中のすべてのスレッドをウェイクアップします。
サンプル コード:
public class MessageQueue { private String message; private boolean hasMessage; public synchronized void putMessage(String message) { while (hasMessage) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.message = message; hasMessage = true; notifyAll(); } public synchronized String getMessage() { while (!hasMessage) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } String msg = message; hasMessage = false; notifyAll(); return msg; } }
2.3 スレッド プール
スレッドの作成にはコストがかかり、スレッド数の管理が適切でないとシステム リソースが枯渇する可能性があります。スレッド プールを使用して、スレッドの数を管理し、作成されたスレッドを再利用し、スレッドの実行順序と優先順位を制御します。 Java は、スレッド プールを実装するための Executor インターフェイスと ExecutorService インターフェイス、および ThreadPoolExecutor 実装クラスを提供します。
サンプル コード:
public class ThreadPoolExample { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(10); for (int i = 0; i < 100; i++) { final int taskIndex = i; executor.execute(new Runnable() { @Override public void run() { System.out.println("执行任务:" + taskIndex); } }); } executor.shutdown(); } }
上記の紹介から、Java マルチスレッド プログラミングには同期と相互排他、スレッド通信とスレッド プール、その他のテクノロジが含まれることがわかります。これらの基本概念とプログラミング手法を理解することは、開発者がマルチスレッド テクノロジをより適切に適用して Java アプリケーションの同時パフォーマンスを向上させるのに役立ちます。
以上がJava マルチスレッドの原理とプログラミング手法を詳しく学びます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。