Java は人気のあるプログラミング言語であり、最も広く使用されているマルチスレッド プログラミング言語の 1 つです。マルチスレッドとは、プログラムが複数のタスクを同時に実行できるようにすることを指し、これによりプログラムの実行効率が向上します。この記事では、Java開発におけるマルチスレッドの手法と例を紹介します。
Java におけるマルチスレッドは、複数のスレッドを作成してコード内のタスクを完了することです。シングルスレッド プログラムでは、各ステートメントが順番に実行されますが、マルチスレッド プログラムでは、異なるスレッドが異なるステートメントを同時に実行できるため、プログラムの実行効率が向上します。
Java では、スレッドは Thread クラスを通じて実装されます。各スレッドは、独自の実行スタックと実行制御フローを持つ独立した実行ユニットです。 Java のスレッドはユーザー スレッドとデーモン スレッドに分けられます。すべてのユーザー スレッドの実行が終了すると、デーモン スレッドも実行を終了します。
Java でマルチスレッドは、Runnable インターフェイスを実装するか、Thread クラスを継承することによって実現できます。 Runnable インターフェイスを使用するとコードを再利用でき、Thread クラスを使用するとより詳細な制御を実現できます。
2.1 Runnable インターフェイスの実装
Runnable インターフェイスを使用するには、run() メソッドを実装し、複数のスレッドで実行されるコードを run() メソッドに記述する必要があります。 Runnable インターフェイスを使用するには、Thread オブジェクトを作成し、Thread オブジェクトを通じてスレッドを開始する必要があります。
サンプル コードは次のとおりです。
public class MyRunnable implements Runnable { @Override public void run() { //多线程执行的代码 System.out.println("MyRunnable start"); } public static void main(String[] args) { MyRunnable r = new MyRunnable(); Thread t = new Thread(r); t.start(); } }
2.2 Thread クラスの継承
Thread クラスを継承するには、run() メソッドをオーバーライドし、マルチスレッド実行を記述する必要があります。 run() メソッドのコード。
サンプル コードは次のとおりです。
public class MyThread extends Thread{ @Override public void run() { //多线程执行的代码 System.out.println("MyThread start"); } public static void main(String[] args) { MyThread t = new MyThread(); t.start(); } }
Java のマルチスレッドは、いくつかの一般的なメソッドを使用して操作できます。メソッド。一般的に使用されるメソッドは次のとおりです。
3.1 start()
start() メソッドは、スレッドを開始するメソッドです。
サンプル コードは次のとおりです。
Thread t = new Thread(); t.start();
3.2 join()
join() メソッドは、スレッドの実行が完了するのを待つメソッドです。
サンプル コードは次のとおりです。
Thread t = new Thread(); t.start(); t.join();
3.3 sleep()
sleep() メソッドは、スレッドを一定期間スリープさせるメソッドです。
サンプル コードは次のとおりです:
Thread.sleep(1000);
Java の複数のスレッドには同期の問題が伴います。同じリソースにアクセスすると、競合が発生する可能性があります。 Java は、この問題を解決するために、synchronized キーワードと Lock インターフェイスを提供します。
4.1 synchronized キーワード
synchronized キーワードを使用すると、オブジェクトまたはメソッドを変更して、このオブジェクトまたはメソッドを同時に 1 つのスレッドだけが実行できるようにすることができます。
サンプル コードは次のとおりです。
public class MyThread implements Runnable{ private static int count = 0; @Override public synchronized void run() { for (int i = 0; i < 10000; i++) { count++; } } public static void main(String[] args) throws InterruptedException { MyThread r1 = new MyThread(); MyThread r2 = new MyThread(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(count); } }
4.2 Lock インターフェイス
Lock インターフェイスは、より柔軟なロック方法を提供し、synchronized キーワードよりも洗練されています。
サンプルコードは次のとおりです。
public class MyThread implements Runnable{ private static int count = 0; private Lock lock = new ReentrantLock(); @Override public void run() { lock.lock(); try { for (int i = 0; i < 10000; i++) { count++; } } finally { lock.unlock(); } } public static void main(String[] args) throws InterruptedException { MyThread r1 = new MyThread(); MyThread r2 = new MyThread(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(count); } }
Java のマルチスレッドはプログラムの実行効率を向上させることができるため、よく使用されます。開発中。この記事では、Java マルチスレッドにおける基本概念、実装方法、一般的な方法、および同期問題の解決策を紹介します。 Javaを開発する学生の参考になれば幸いです。
以上がJava で開発されたマルチスレッドのメソッドと例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。