Javaの基本 - (スレッドの集合)

セット

1、およびConcurrentHashMapの地図の違いは?
後者はスレッドセーフ

2、内部ハッシュマップの特定はどのように達成するために?
エントリのキーと値のコレクションとして自身の地図
(競合) - 1.7プラスリンクリストの配列
1.8プラス赤黒木の配列- (競合)

3、ハッシュマップは、キーがカスタムクラスであれば、どのようにしますか?

4、のArrayListとLinkedListの差、要素は、リストの末尾に追加されている場合、高効率でいますか?
ArrayListの

6、ConcurrentHashMapのプラスどのような場所でロック?
segementの
セグメントは、各セグメントがロックとして使用することができることを意味するReentrantLockのを継承しました。従って、各セグメントのデータは、それ自体が、各ロックセグメントコンテナオブジェクトを使用して達成される動作に同期される必要があります。場合にのみ、すべてのロック・セグメントを変更するには、グローバルな必要性。
1.8後の使用ノード+ CAS +同期は安全な行動の同時実現を確保します

図7は、TreeMapの底部、赤黒木原理
1、各ノードの唯一の色は赤または黒です。
2、根は黒です。
ノードnは唯一の子供が右の子、次いで、左Nホイッスルが兵士であれば3、各リーフノードは、2つの空のノード(ホイッスルの兵士と呼ぶ)と、黒である。ノードn場合唯一の右の子、子は、nホイッスル兵士を残しています。
4ノードが赤色である場合、その二人の息子は黒です。その赤色二つの隣接ノードがパス上に表示することができません。
図5は、各ノードについて、その子孫リーフノードからノードへのすべてのパス上の黒のノードの同じ番号が含ま。

8、強み、1.7、1.8の違い何のConcurrentHashMap?
1.7 segement 1.8同期+ノード+ CAS

9、ArrayListの国境を越えたかどうか?
いいえ、インクリメント演算子

10. TreeMapのはどのようなものですか?
です整然とした赤黒木によって達成されたキーと値のコレクション、の。

11、ConcurrentHashMapの何が原則ですか?
ハッシュマップのスレッドセーフなコレクション

12、持っているJavaのコレクションクラスのための基本的なインタフェースフレームワーク一部を?

13、なぜコレクションは、Cloneableをし、Serializableインタフェースを実現していませんでしたか?

14.イテレータとは何ですか?
イテレータそれ= collection.iterator()。

15.イテレータと反復子がある違いは何ですか?
反復子インタフェース定義3つの方法のhasNext()、次に()、削除()は、
反復子は(追加している)、hasprevious()前 () )nextIndexを配置指数()previousIndex()オブジェクトは、(セットを修正することができる使用することができ方法

16.差速いの失敗(フェイルファスト)及び(フェイルセーフ)があるセキュリティ上の障害は何ですか?
カテゴリjava.utilパッケージの下に設定し、高速失敗(フェイルファスト)フェイルファスト、変更は、同時マルチスレッディング(修正の繰り返し)で発生することはできませんされて
横断中にあれば、オブジェクトのコレクションを反復処理を使用した場合コレクションオブジェクトの内容は(変更、削除、追加)変更された、同時変更例外がスローされる
安全側故障(フェイルセーフ)
、安全な故障メカニズムを使用して回収容器、横断中にコレクションのコンテンツに直接アクセスできませんしかし、コレクションの元の内容の最初のコピーは、コレクションのコピーにトラバースします。
反復の元のコピーは、元のセットに加えられた変更のトラバーサル中反復子がトリガされない同時変更例外によって検出されるべきではないように、トラバースに設定されているため。コンテナはjava.util.concurrentパッケージが失敗したの下で、あなたはマルチスレッドの同時実行、同時変更を使用することができ安全です。

17、HashMapのやHashtableの違いは何ですか?
ハッシュはヌルヌルキーと値のペア、ハッシュマップハッシュテーブル非スレッドセーフな安全性を受け入れますが、ConcurrentHashMapのが交換されています

18、ArrayListのとLinkedListの違いは何ですか?
配列、二重にリンクされたリスト

19、ArrayListに、ベクトル、LinkedListのストレージ性能特性は何ですか?
ベクトルスレッドセーフ

20違い、コレクションのコレクション。

21、あなたは、コレクションの種類を知っていますか?mainメソッド?

22、リスト、Collectionインタフェースから継承されたかどうかを設定し、地図?
地図なし

図23は、保存性及び特性のArrayList、ベクターのLinkedListの記載します

アクセス要素が、違いは何ですかながら24は、リスト、地図は、3つのインタフェースを設定しますか?
、同じキーを格納することができない地図記憶チームのエントリーリストの個々の要素を設定します

###、スレッド
1、マルチスレッドI ++スレッドセーフ?なぜ?
非アトミック操作

2、どのようにスレッドセーフなカウンターを実装するには?
アトミック・ベースの方法
パブリッククラスカウンタ{
のAtomicIntegerののAtomicIntegerのプライベート新しい新しいCOUNT =();
公共カウンタ(){}
公共のint同様にgetCount(){
戻りcount.get();
}
公共ボイド増加(){
count.getAndIncrement();
}
}

たCountDownLatchは、カウンタ達成することができ
たCountDownLatchをしてCyclicBarrierをを説明します

3、マルチスレッド同期化方法
同期ロック、ReentrantLockの、

4、生産者 - 消費者モデルについて教えて?

5、その後、スレッド、プロセス、およびスレッドが最適化する方法を、多額の費用を作成しますか?
スレッドプール

図6に示すように、スレッドプール動作手順、パラメータ、ポリシー
corePoolSize -スレッドのコア数
maximumPoolSize-スレッドの最大数
keepAliveTime--アイドルスレッドタイムアウトの端
部は、 - keepAliveTimeが単位を表し、
BlockingQueueのworkQueue-記憶タスク<Runnableをキュー。
BlockingQueue-ブロッキングキュー(BlockingQueueの)はjava.util.concurrentのスレッドの同期を制御するために使用される主要なツールである
https://blog.csdn.net/kuizhu7142/article/details/81330308

7は、AQSはそれについて話しています。
AbstractQueuedSynchronizer
核となるアイデアAQS、要求された共有リソースはその後、効果的なワーカースレッド、およびロックされた状態に共有リソースのためのリソースの現在のリクエストのスレッドセットは、共有リソースを要求が占有されている場合は、無料であれば、その後、必要スレッドがロック機構を待ってブロックして起こされるように割り当てられ、このメカニズムは、あまり一時的にスレッドがキューに追加されたロックよりも取得しようとしている、CLHロックキューによって実装されるAQS。
CLH(クレイグ、とLandin、及びヘゲルステン ) キューは、仮想キューは、双方向であり、すなわち、仮想キュー双方向キューが既に関係が唯一のノード間に存在する存在しません。
https://blog.csdn.net/mulinsen77/article/details/84583716

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

13は、どのようにマルチスレッドのJavaコールバックメソッドを理解するには?

14は、スレッドがいくつかの異なる方法で作成されましたか?あなたはどちらを好むのですか?なぜ?
二つの別々の継承達成

15、下糸解釈が利用可能ないくつかを概説しました。

16.差分同期方法と同期ブロックとは何ですか?
このメソッドを呼び出す前に、同期した同期方法を使用して、1改質方法は、それが組み込まれてロックを得る必要がある(Javaは各オブジェクトが内蔵ロックしている)、それ以外の場合はブロックされている
コードはとおり公共保存ボイド同期(){ // コンテンツ}

2.同期ブロック同期(オブジェクト){}、それ以外の場合はブロックされ、コードブロックは、構築され、ロックを取得する必要があるときに呼び出され、修正される
ようなコード:
同期(オブジェクト){
//コンテンツ
}

17、いくつか持っているスレッド、スレッドプールを、開始するにはいくつかの方法を持っていますか?
4種類newCachedThreadPool
newSingleThreadExecutor
newFixedThreadPool
newScheduledThreadPool

18、(モニタ)内蔵モニターで、どのようにスレッドの同期を行いますか?プログラムは、同期のどのレベルにすればよいですか?

19、睡眠()と待機()の違いは何ですか?
睡眠は()、独自のCPUを作るために、現在のスレッドをご案内いたしますが、現在のリソースの同期ロックを解放しません
(WAIT)のみ実行スレッドの通知()メソッドを呼び出すために、現在のスレッド同期後退独自のリソースのロックが発生するまで待ちますリソースの同期ロックの競争に参加するために、目覚めされます

同期および非同期20、彼らがいたれる状況での類似点と相違点は何ですか?イラスト。

二つのスレッドのそれぞれ1 jがインクリメントされる21は、ねじ山の設計は、他の2つのスレッド1 jをデクリメントします。Jの増加にスレッドを実装したり、順序が問題とみなされていない時間を短縮する内部クラスを使用します

22、(スレッドが実行された開始)、または[スタート]()?
[スタート]()

23、あなたが知っている方法を明記してくださいスレッド同期

25、Javaのスレッドを実装する方法はいくつかありますか?何が?ストップ(修正同期方法をキーワード)とお勧めできませんなぜ()メソッドを中断しますか?

26、スレッドスリープ()メソッドと歩留まり()メソッドの違いは何ですか?
一時的に他の低優先度のスレッドが実行できるが、収率が()だけその実行スレッドに同じ優先順位を与えることができ、かつ時間を指定することはできませんできるようになるいくつかの時間、あきらめにスリープCPUスレッド
収率が参加
Bでb.joinのコールに参加します(A)は、Bの実行が完了した後に実行される
収率は実行が完了した後まで、B実行
https://blog.csdn.net/reboot123/article/details/22589621を

図27は、スレッドが同期メソッドAのオブジェクトに入ったとき、他のスレッドがこのオブジェクトの同期化方法Bにアクセスすることができますか?

28は、状態スレッド同期とスレッドのスケジューリング方法に関連してください

Thread.yield()メソッドは、同じまたはより高い優先順位のスレッドを実行する機会を与えるために、現在実行中のスレッドオブジェクトを一時停止します。
join()メソッド、他のスレッドの待機が終了します。現在のスレッドに別のスレッドを呼び出す準備完了状態に現在のスレッドをブロックすることによって、次に実行する別のプロセスが終了するまで()メソッドは、ブロックされた状態に現在のスレッドを、参加、および。
setPriorityを()およびgetPriority()メソッドを設定するために使用し、スレッドの優先度を取得しています。
ロック、ReentrantLockののsynchroinzed
スケジューリング:SYNを:待機を通知
ロック:条件(条件モニタは、モニターの複数のペアを使用することができ、モニターを待たなければならない信号によるウェイクアップでなければなりません)condition.signal Condition.await //() ;

29、同期および非同期の例
マルチスレッドを終了し、オブジェクトがスレッドのロックを取得するために待機しなければならない同期させることである非同期ロック、ロック実行方法獲得する次のスレッドである
スレッドプールであるもの30を、(スレッドプール)?
スレッドプールを進めるタスクに対処する必要がある場合、スレッドプールのスレッドがスレッドを処理して破壊されることはありませんが、次のタスクを待った後、タスクを処理する、複数のスレッドを作成することです。作成と破棄のスレッドがシステムリソースを消費しているので、あなたが頻繁に作成し、破壊するスレッドにしたいとき、そのシステムのパフォーマンスを改善するために、スレッドプールの使用を検討することができます。

31、スレッドとステータスの基本的な状態との関係について話をしますか?

32、どのようにスレッドの安全性を確保するには?

公開された68元の記事 ウォンの賞賛3 ビュー5216

おすすめ

転載: blog.csdn.net/Hqxcsdn/article/details/88803862