Java でのスレッドの同時実行性

Linda Hamilton
リリース: 2024-11-02 11:05:30
オリジナル
925 人が閲覧しました

Thread Concurrency In Java

高度な Java のスレッド同時実行またはマルチスレッドにより、複数のスレッドを同時に実行できるようになり、複雑なアプリケーションのパフォーマンスと応答性が向上します。ここでは、その主要な概念とユーティリティを簡潔に説明します。

Java におけるマルチスレッドの主な機能:

  1. スレッドを作成しています。
  2. Executor によるスレッド管理
  3. 同時実行ユーティリティ
  4. フォーク/結合フレームワーク
  5. 完成可能な未来を備えた非同期プログラミング

1️⃣ スレッドを作成します。

  • スレッドの拡張: run() メソッドをオーバーライドして新しいスレッドを作成します。

  • Runnable の実装: Runnable インスタンスを Thread オブジェクトに渡します。

  • Callable の実装: Runnable とは異なり、Callable ではスレッドが結果を返し、チェックされた例外を処理できます。

2️⃣ エグゼキューターによるスレッド管理。

  • Java の Executor Framework (java.util.concurrent.ExecutorService) はスレッド プールを管理し、タスクの効率的な処理を可能にします。

  • FixedThreadPool や CachedThreadPool などのエグゼキュータは、再利用可能なスレッドのプールを作成し、それらを効率的に管理して、新しいスレッド作成のオーバーヘッドを削減します。

3️⃣ 同時実行ユーティリティ

  • ロック: ReentrantLock などの高度なロック メカニズムは、同期メソッドよりも柔軟性があり、時間指定された割り込み可能なロックを可能にします。

  • アトミック変数: java.util.concurrent.atomic パッケージには、ロックフリーのスレッドを提供するアトミック クラス (AtomicInteger、AtomicLong) が含まれています-
    安全な操作。

  • シンクロナイザー:次のようなユーティリティが含まれます:
    CountDownLatch: 他のスレッドが完了するまでスレッドが待機できるようにします
    タスク。
    CyclicBarrier: 共通の
    で固定数のスレッドを同期します。 バリアポイント。
    セマフォ: 特定の番号を許可することでリソースへのアクセスを制御します
    同時スレッドの数。

4️⃣ フォーク/結合フレームワーク

  • 1.分割統治タスクの場合、ForkJoinPool はタスクを並列処理される小さなサブタスクに分割します。これは再帰アルゴリズムで特に役立ちます。

5️⃣ 完成可能な未来を備えた非同期プログラミング

  • CompletableFuture は、非同期でノンブロッキングなプログラミングを可能にし、複雑なワークフローのタスクのチェーン化と結合を可能にします。

スレッドの使用例

メインクラスは 2 つの異なるスレッドを呼び出します

public class ThreadConcurrence {
    public static void main(String[] args) {
        // There is 2 type you have to call thread method
                //1- Extend Thread class
                //1- Implements Runnable class
        // why Implement concept is introduce here
                // because in java multiple thread dose not support that's so why implement class will introduce
                // ex- when u extend (inherit) base call, then at that time this call can not extend another Thread class.
        int n = 10;
        for (int i = 0; i < n; i++) {

            // in case of extend(inherit) Thread class
            Thread1 t1 = new Thread1();
            t1.start();

            // in case of implement Runnable class
            Thread t2 =new Thread(new Thread2());
            t2.start();
        }
    }
}

ログイン後にコピー

スレッド 1--(スレッドを拡張)

public class Thread1 extends Thread{
    //If you are extend Thread class then you  most be used run()
    // Because when you start a thread then run() automatically call and run
    public void run(){
        try {
            System.out.println("Thread1 is running now....");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

ログイン後にコピー

スレッド 2--(Runnable を実装)

public class Thread2 implements Runnable {
    //IF you are implement thread Then run() will be executed.
    // Because when you start a thread then run() automatically call and run
    public void run(){
        try {
            System.out.println("Thread2 is running.......");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

ログイン後にコピー

結論:

これらのツールとフレームワークを活用することで、高度な Java マルチスレッドにより、同時タスクをシームレスに処理できるスケーラブルで高性能なアプリケーションを構築できます。

さらに詳しい情報が必要な場合は、お気軽に Linkedin や GitHub に言及して詳細な例やコード サンプルをご覧ください。具体的な調整が必要な場合はお知らせください。

Linkedin : https://www.linkedin.com/in/pravanjan-17p/

GitHub : https://github.com/Prabhanjan-17p

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

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