ホームページ > Java > &#&チュートリアル > スレッド間の同期と通信

スレッド間の同期と通信

Patricia Arquette
リリース: 2024-11-27 07:37:09
オリジナル
605 人が閲覧しました

追加コンテンツ:

スレッド間の同期と通信
問題: 共有データにアクセスするときにスレッドが相互に干渉する可能性があります。

解決策:
同期されたメソッド

synchronized void synchronizedMethod() {
    // Código sincronizado
}

ログイン後にコピー

同期されたブロック:

synchronized (this) {
    // Código sincronizado
}

ログイン後にコピー

通信例:

wait()、notify()、notifyAll() を使用したスレッド間の通信:

class SharedResource {
    private boolean flag = false;

    synchronized void produce() {
        while (flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Producing...");
        flag = true;
        notify();
    }

    synchronized void consume() {
        while (!flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Consuming...");
        flag = false;
        notify();
    }
}

public class ThreadCommunication {
    public static void main(String[] args) {
        SharedResource resource = new SharedResource();

        Thread producer = new Thread(resource::produce);
        Thread consumer = new Thread(resource::consume);

        producer.start();
        consumer.start();
    }
}

ログイン後にコピー

結論

  • Java のマルチスレッド プログラミングを使用すると、特にマルチコア システムで、より効率的なアプリケーションを作成できます。
  • 同期を使用して共有リソースへのアクセスを正しく管理することが重要です。
  • Thread クラスのメソッドと Runnable インターフェイスは、マルチタスクを処理するための強力なツールです。

Sincronização e Comunicação entre Threads

以上がスレッド間の同期と通信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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