2017-05-14 6 views
1

私はConcurrentLinkedDequeがマルチスレッドアプリケーションで使用できる2つの基本的な違いを知っています。ConcurrentLinkedDequeとArrayDeque

誤って使用した場合、アプリケーションのパフォーマンスにどのような影響があり、どのような状況でConcurrentLinkedDequeを使用し、ArrayDequeをいつ使用するべきかを実践的な例を挙げてください。

答えて

0

複数のスレッドからキューに同期アクセスする必要がある場合は、を使用してください(ArrayDeque)。

期間。

間違った使用の結果、マルチスレッド設定でArrayDequeにアクセスしようとすると、キューが破損する可能性があります。

期間。

これはパフォーマンスに関する唯一の考慮事項です。他のすべては疑問です。

講義の終了;)

+0

マルチスレッドアプリケーションで使用する場合、deque ArrayDequeをどのように破損させますか? – ketan

+0

'ArrayDeque'は、複数のスレッドが同時にアクセスしようとしないようにするために必要なスレッド同期を提供しません。例えば、スレッド "A"が 'addFirst()'を実行しようとしているときに、同じ時間_にスレッド "B"が 'removeFirst()'を実行しようとしているとします。これはお互いに衝突し、おそらく 'ArrayQueue'を混乱状態にしてしまいます。 –

+0

ConcurrentLinkedDequeは同期を提供しません。クラスとそのスーパークラスをCtrl + Fキーで押せば、ロックや同期ステートメントは使用されません。 sun.misc.UnsafeのcompreAndSwapを使用します。 –

関連する問題