4

LinkedList、BlockingQueuesのような多くのキュー実装がJavaに存在します。それらはすべてスレッドセーフですか?いいえと答えた場合、どの実装が同時アクセスをサポートし、どれが最高のパフォーマンスを提供しますか?

注:私はJDK1.6を使用しています。

4

2 に答える 2

9

ほとんどの標準コレクションはスレッドセーフではありません。この情報は、APIドキュメントを読むときに見つかります。

たとえば、LinkedListのドキュメント:

複数のスレッドがリンクリストに同時にアクセスし、少なくとも1つのスレッドがリストを構造的に変更する場合は、外部で同期する必要があります

複数のスレッドからアクセスされるコレクションについては、java.util.concurrentパッケージを確認する必要があります

于 2012-12-23T15:46:40.010 に答える
7

いいえLinkedList。たとえば、スレッドセーフではありません。

パッケージに含まれているものjava.util.concurrentはスレッドセーフです。

最高のパフォーマンスは、それらをどのように使用するかによって異なります。また、パフォーマンスに基づいて実装を選択するのではなく、キューの動作とキューで何をする必要があるかに基づいて実装を選択します。たとえば、aのSynchronousQueue動作はaLinkedListまたは。とはまったく異なりますArrayBlockingQueue

于 2012-12-23T15:46:27.190 に答える