Javaのマルチスレッドのインタビュー

1、マルチスレッドの使用は何ですか?

  (1)は、マルチコアCPUを活用します。

  それは単一スレッドプログラムである場合、現在、アプリケーションサーバは、少なくともデュアルコア、4コア、8コアであるか、または16コアも珍しいことではない、は、デュアルコアCPU上で、50%浪費される4コアCPUに無駄75%。シングルコアCPUで、いわゆる「マルチスレッド」falseであること、マルチスレッドプロセッサのみベールを実行し、「同時に」の論理の同じ期間に対処する、より高速なスレッドの切り替えよりも、複数のスレッドのように見えます。マルチコアCPU上でマルチスレッドは、真のマルチスレッド化され、それはあなたが、同じ論理マルチセグメントで動作することができ、マルチスレッド、実際にCPUをフルに活用の目的を達成するために、マルチコアCPUの利点を再生することができます。

       (2)は、閉塞を防ぎます。

  それはコンテキストスイッチをスレッドにつながる、とシングルコアCPU上でプログラムの全体的な効率が低下しますので、作業効率の観点の手続きの点からは、シングルコアCPUは、マルチスレッド、マルチスレッド実行の利点を再生されませんしかし、我々はまだ、マルチスレッド・アプリケーションに持っているシングルコアCPUは、それがすることです詰まりを防止しますシングルコアCPUがシングルスレッドを使用している場合だけだと思い、その限りこのスレッドがブロックされているとして、あなたはその後、データをリモートで、ピアがまだ返却されていないと決まったタイムアウト(このように多くの時間を過ごすには、データベースへのアクセスなど)それを読んで言いますデータの前に全体のプログラムが実行を停止するために戻されます。マルチスレッドでは、データを読み込むためのコードの実行スレッドは、それが他のタスクの実行には影響しません、ブロックされた場合でも、同時に実行するために、スレッドの数を、この問題を防ぐことができます。

2、スレッドの道を作成します。

  これは、2つの方法で、一般的です。

  (1)Threadクラスの継承

  (2)のRunnableを実装

  優れているとされるように、後者は言うまでもないので、確かに良好である(Javaは複数のインターフェイスを実装することができるが、唯一のクラスを継承することができる)継承クラスよりインターフェイスより柔軟な方法の実装の方法、だけでなく、プログラム間の結合の程度を減少させますまた、指向プログラミングインタフェース設計パターン6つのコア原則。

区別3、start()メソッドとrun()メソッド

  start()メソッドのみを呼び出し、内部交互に行うマルチスレッド実行異なるスレッド()メソッドコードの特性を示すであろう。

  あなただけのrun()メソッドを呼び出すと、コードが同期して実行されます。

4、呼び出し可能のRunnableインターフェースとインターフェースとの間の差

  戻り値の実行、Runnableインタフェース()メソッドは無効となり、それにrun()メソッドのコードを実行するために、純粋にそれを行います。

  呼び出し可能インタフェース()メソッドを呼び出すことは、値を返す一般的であり、そして今後、FutureTaskは実行とは非同期に結果を得るために使用することができます。実際には、これは便利な機能があるため、シングルスレッドのマルチスレッド難しく、より重要な理由であることが比較不明なセックスの完全な複雑なマルチスレッド、理由は特定のスレッドかどうか?いくつかのスレッドがどのくらい実行しますか?特定のスレッドは、我々はデータを期待譲渡の実行が完了したときかどうか?知らない、私たちは、このマルチスレッドのタスクがそれを完了するまで待機される行うことができます。あなたが必要なデータを取得するにはあまりにも長い間待つことができない、スレッドのタスクはケースコーラブル+フューチャー/ FutureTaskで本当に便利ですキャンセルができますが、複数のスレッドを実行した結果を得ることができます

5、違いCyclicBarrierをして​​たCountDownLatch

おすすめ

転載: www.cnblogs.com/liufei1983/p/11809006.html