複数のスレッドを使用したキャッププログラミング

Mary-Kate Olsen
リリース: 2024-11-22 05:38:17
オリジナル
910 人が閲覧しました

主なスキルとコンセプト
• 複数のスレッド作成の基本を理解する
• Thread クラスと Runnable
インターフェイスについて理解する • スレッドを作成します
• 複数のスレッドを作成します
• スレッドがいつ終了するかを決定する
• スレッドの優先順位を使用する
• スレッド同期を理解する
• 同期メソッドを使用する
• 同期ブロックを使用する
• スレッド間の通信を促進する
• スレッドの一時停止、再開、停止

スレッド: これらは、プログラム内の独立した実行パスです。
マルチタスク: プロセス (複数のプログラム) またはスレッド (同じプログラム内の複数のタスク) に基づいて実行できます。
利点:
空き時間を利用すると効率が上がります。
マルチコア/マルチプロセッサ システムをより有効に活用します。

スレッドの作成と管理

クラスとインターフェース:
スレッド: スレッドをカプセル化するクラス。
実行可能: カスタム スレッドを定義するために使用されるインターフェイス。

共通スレッド クラス メソッド:

  • getName(): スレッドの名前を返します。
  • getPriority(): 優先度を返します。
  • isAlive(): スレッドがまだ実行中かどうかを確認します。
  • join(): スレッドが終了するのを待ちます。
  • run(): スレッドのエントリ ポイントを定義します。
  • sleep(long ms): スレッドを一定期間一時停止します。
  • start(): スレッドの実行を開始します。

スレッドの作成:

  • ランナブルの実装:
class MyThread implements Runnable {
    String threadName;

    MyThread(String name) {
        threadName = name;
    }

    public void run() {
        System.out.println(threadName + " starting.");
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(400);
                System.out.println("In " + threadName + ", count is " + i);
            }
        } catch (InterruptedException e) {
            System.out.println(threadName + " interrupted.");
        }
        System.out.println(threadName + " terminating.");
    }
}

public class UseThreads {
    public static void main(String[] args) {
        System.out.println("Main thread starting.");

        MyThread myThread = new MyThread("Child #1");
        Thread thread = new Thread(myThread);
        thread.start();

        for (int i = 0; i < 50; i++) {
            System.out.print(".");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println("Main thread interrupted.");
            }
        }
        System.out.println("Main thread ending.");
    }
}

ログイン後にコピー

期待される出力:

Main thread starting.
.
Child #1 starting.
..
In Child #1, count is 0
...
In Child #1, count is 1
...
Main thread ending.

ログイン後にコピー

スレッドクラス拡張:

class MyThread extends Thread {
    MyThread(String name) {
        super(name);
    }

    public void run() {
        System.out.println(getName() + " starting.");
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(400);
                System.out.println("In " + getName() + ", count is " + i);
            }
        } catch (InterruptedException e) {
            System.out.println(getName() + " interrupted.");
        }
        System.out.println(getName() + " terminating.");
    }
}

public class UseThreads {
    public static void main(String[] args) {
        System.out.println("Main thread starting.");

        MyThread thread = new MyThread("Child #1");
        thread.start();

        for (int i = 0; i < 50; i++) {
            System.out.print(".");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println("Main thread interrupted.");
            }
        }
        System.out.println("Main thread ending.");
    }
}

ログイン後にコピー

注: sleep() メソッドは、呼び出されたスレッドの実行を一時停止します
指定されたミリ秒期間の間。

ブックテーブル
Cap Programação com várias threads

以上が複数のスレッドを使用したキャッププログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート