マルチスレッドの現在のパッケージ

マルチスレッドプログラムを書くことは常に面倒なことであり、考慮すべきことがたくさんあります。それをうまく処理しないと、予期しない問題がたくさん発生します。さらに、多くの開発者がさらされているプロジェクトは、エンタープライズレベルのバナーの下にあるB / Sプロジェクトであり、ほとんどの人がマルチスレッドを使用することはめったにないため、この記事の主人公に謎の感覚が加わります。

 

Javaマルチスレッドに関しては、ほとんどの人の心はスレッド、実行可能、同期されています...これらは最も基本的なものです。十分に強力ですが、うまく使用するのは簡単ではありません。JDK 1.5から、java.util.concurrentパッケージが追加されました。その導入により、マルチスレッドプログラムの開発が大幅に簡素化されます(大物のDoug Leeに感謝します)。

 

java.util.concurrentパッケージは、java.util.concurrent、java.util.concurrent.atomic、およびjava.util.concurrent.lockの3つの部分に分かれています。コンテンツには、同時収集クラス、スレッドプールメカニズム、同期相互排除メカニズム、スレッドセーフな変数更新ツール、ロック、およびその他の一般的なツールが含まれます。

 

理解を容易にするために、この記事では例を使用してそのシナリオを説明します。

10個のノードで構成される環境をチェックするとします。この環境には2つのエントリポイントがあり、ノード間の依存関係を介して環境全体をトラバースできます。依存関係は有向グラフを形成する可能性があり、サイクルが存在する可能性があります。検査の効率を向上させるために、マルチスレッドの使用を検討してください。

 

1、エグゼキュータ

このクラスを介して複数のスレッドプールインスタンスを取得できます。たとえば、newSingleThreadExecutor()を呼び出してシングルスレッドのExecutorServiceを取得し、newFixedThreadPool()を呼び出してExecutorServiceの固定サイズのスレッドプールを取得できます。ExecutorServiceを取得すると、実行できることがたくさんあります。最も簡単なのは、Runnableオブジェクトを実行するために使用するか、Calを実装するオブジェクトを実行することです。

おすすめ

転載: blog.csdn.net/hongweideng/article/details/104385228