並行プログラミングの核となるアイデアが高い:複数のスレッドの可視性、重要なデータの不可分のコアビジネスが実行されていることを保証するために、整然とした通信をマルチスレッド。
同時並行で何が何であるかを理解するための最初の必要性
何をによって複雑になります。
同じイベントが発生し、同じ時間は、春祭りとして、同時に多くの人がサーバーのチケットは、より多くの手で複雑になっているサーバーに対して同時に二から一一チョップよりも、例えば、複雑であるつかむと同時に同じサーバーの詳細です。
パラレルとは何か:
イベントが発生し、同じ時間は、春祭りのラッシュチケットなど並行して複数のサーバーが、人々はまた、あなたと他の人のためにあなたのチケットをつかむと同時に、チケットを急ぐ、それはあなたにも購入されているのと同じ時間で、このようなハンドカットダブル11などのようなパラレル、ですあなたや他の人のために買って、それが平行になっています。
同時並列概念は簡単に、注意を払う必要性を混同しています。
我々は、同時二つの絵を見た後、二つの絵は、Javaランタイム、同時単純な原理です行われているかを知るには良いです:
可視性、マルチスレッド
なぜ、可視性の問題が生成されます。
スレッドがCUPによって作成されるため、CUPが作成されたときに、独自のキャッシュ領域にヒープメモリオブジェクトキャッシュの一部がデータの矛盾が問題にプログラムの原因となりますので、オブジェクトの操作を実行している他のスレッドが、存在する場合、現在のスレッド中。
可視性の問題を解決する方法:
まず、オブジェクトをキャッシュすることができませんCUP:使用して揮発性、synchronizedキーワード
第二は、オブジェクトを変更することはできません。グローバル変数は、最終的にすることはできません列挙列挙は、オブジェクトを書き込む手動で変更することはできません
アトミックコアビジネス
アトムとは何ですか:論理演算は解決できません
なぜ原子問題を生じる:糸と糸との間に複数の並列スレッドで同じタスクが実行され、表示されていない、そして最終的に結果を得る、それはまた、マルチスレッド得原子問題の利点です。
どのようにアトミックの問題を解決するために:
まず、マルチスレッド原子に外部オブジェクトを与えられた:synchronizedキーワードの使用は、マルチスレッドを一時的に偽装形式を使用してコアビジネスの実装でロックロックオブジェクトに関連するクラスは、シングルスレッドとなります。
整然とした通信をマルチスレッド
順序:Aは、イベントBイベントの発生に発生するのに十分な条件である場合、我々は、A、Bイベントが最初に入射順序付け、および副障害VERSA再び起こる発生呼び出します。
なぜ順序付け問題を生成する:糸と糸の間にそれがBイベントは、イベントAが発生したか否かを確認するためにできない時に発生され、並行して、表示されません。
どのように秩序の問題を解決するために:
まず、スレッド間のコラボレーションがそのイベントAがBブロック待ちの前に行われるように、ウェイクアップイベント後のイベントA B. --- ---オブジェクト待機をロック通知するために使用することができますのnotifyAll、あなたは少し柔軟lock.newCondition()とされたCountDownLatch他の方法を使用することができます。
理解することは少し難しいがあるかもしれません、私が書いた物語があなたに役立つかもしれません。