Java が ExecutorService を使用して多数のスレッドを同期的に実行する方法の詳細な説明 (図)

黄舟
リリース: 2017-03-28 10:24:59
オリジナル
2042 人が閲覧しました

この記事では、Java が ExecutorService を使用して多数のスレッドを同期的に実行する方法を主に紹介します。ExecutorService は、重要なリソースを操作するときに多数のスレッドの安定性を維持します。

Java 1.5 以降、公式 Web サイトで Executor のようなクラスが開始されました。このクラスは、重要なリソースを操作するときに多数のスレッドの安定性を維持できます。
コードの一部から始めましょう:

TestRunnable.java

public class TestRunnable implements Runnable {
  private String name;

  public TestRunnable(String name) {
    this.name = name;
  }

  @Override
  public void run() {
    while (true) {
      if (Main.Surplus < 0)
        return;
      Main.Surplus--;
      System.out.println(name + " " + Main.Surplus);
    }
  }
}
ログイン後にコピー

main入口

public static void main(String[] args) {

     TestRunnable runnable = new TestRunnable("runnable1");
     TestRunnable runnable2 = new TestRunnable("runnable2");

     Thread t1 = new Thread(runnable);
     Thread t2 = new Thread(runnable2);

     t1.start();
     t2.start();

  }
ログイン後にコピー

このようにして、もちろん、この時点でデータがめちゃくちゃになっていることが分かります。 synchronized キーワード、しかし、これはいくつかの小さな問題も引き起こします

次に、この問題を解決するために Java 組み込みのスレッド管理メカニズムを使用する予定です。スレッド プールがある場合、操作をリクエストすると、すべての操作がスレッド プールに入り、1 つのスレッドだけが開かれるため、リクエストは順番に実行され、重要なリソースは順番に呼び出すことができ、非常に安全です。

ここでは、ジェネリック型の addTask と addTask という 2 つのメソッドを定義しています。これら 2 つのメソッドの実装原理は同じです。1 つはコールバックを持ち、もう 1 つはコールバックを持ちません。プロジェクトの要件を確認してください。

次に、これら 2 つのメソッドをそれぞれ呼び出します。結果は非常に秩序正しく、混沌としていないことがわかります。

以上がJava が ExecutorService を使用して多数のスレッドを同期的に実行する方法の詳細な説明 (図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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