ホームページ  >  記事  >  Java  >  Java で開発されたマルチスレッドのメソッドと例

Java で開発されたマルチスレッドのメソッドと例

WBOY
WBOYオリジナル
2023-06-18 18:30:08807ブラウズ

Java は人気のあるプログラミング言語であり、最も広く使用されているマルチスレッド プログラミング言語の 1 つです。マルチスレッドとは、プログラムが複数のタスクを同時に実行できるようにすることを指し、これによりプログラムの実行効率が向上します。この記事では、Java開発におけるマルチスレッドの手法と例を紹介します。

  1. Java マルチスレッドの基本概念

Java におけるマルチスレッドは、複数のスレッドを作成してコード内のタスクを完了することです。シングルスレッド プログラムでは、各ステートメントが順番に実行されますが、マルチスレッド プログラムでは、異なるスレッドが異なるステートメントを同時に実行できるため、プログラムの実行効率が向上します。

Java では、スレッドは Thread クラスを通じて実装されます。各スレッドは、独自の実行スタックと実行制御フローを持つ独立した実行ユニットです。 Java のスレッドはユーザー スレッドとデーモン スレッドに分けられます。すべてのユーザー スレッドの実行が終了すると、デーモン スレッドも実行を終了します。

  1. 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();

    }
}
  1. Java マルチスレッドの一般的なメソッド

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);
  1. Java マルチスレッド同期の問題

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);

    }
}
  1. 結論

Java のマルチスレッドはプログラムの実行効率を向上させることができるため、よく使用されます。開発中。この記事では、Java マルチスレッドにおける基本概念、実装方法、一般的な方法、および同期問題の解決策を紹介します。 Javaを開発する学生の参考になれば幸いです。

以上がJava で開発されたマルチスレッドのメソッドと例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。