Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでの従来のコレクションと並行コレクションの違い


私たちが知っているように、Javaでは、コレクションはJavaをそれ自体で強力な言語にする最も重要な概念の1つです。 Javaでのコレクションのサポートのみが、あらゆるタイプのデータを便利で効率的な方法でサポートし、それらに対するCRUD操作を可能にします。

ただし、コレクションがマルチスレッドにさらされる同じフェーズでは、コレクションがマルチスレッド環境をサポートしていないため、パフォーマンスがいくらか低下します。この制限を克服するために、Javaは、マルチスレッド環境の制限を克服するだけでなく、マルチスレッドデータで実行するようにJavaを拡張する並行コレクションを導入します。

以下は、従来のコレクションと並行コレクションの重要な違いです。

従来のコレクション 並行コレクション
Sr.No。 キー
1 スレッドセーフ 配列リスト、リンクリスト、ハッシュマップなど、Javaコレクションのほとんどのクラシッククラスは同期されておらず、マルチスレッド環境ではスレッドセーフではありません。 一方、Javaは、同時コレクションに同じクラスを導入し、それらに同期を実装します。これにより、これらのクラスが同期化されるだけでなく、本質的にスレッドセーフになります。
2 ロックメカニズム VectorやStackなど、従来のコレクションにも同期されたクラスがいくつかありますが、これらのクラスはコレクション全体のロックを使用するため、パフォーマンスと実行速度が低下します。 一方、同時コレクションでは、マルチスレッド環境の場合にコレクションの一部のみをロックする部分ロックの概念が導入され、そのような環境でのコレクションのパフォーマンスと速度が向上します。
3 ランタイム例外 従来のコレクションの場合、コレクションの反復中に別のスレッドを介してコレクションを変更しようとすると、ランタイム例外ConcurrentModificationExceptionが発生しました。 一方、同時コレクションを処理する場合、つまり同時コレクションで反復中にコレクションを変更できる場合は、このような例外は発生しません。
4 設定 上記の理由により、マルチスレッド環境では従来のコレクションは推奨されません。 一方、マルチスレッド環境では、主に並行コレクションが推奨されます。
5 市場への導入 従来のコレクションはJavaのレガシーコレクションの一種であり、同時コレクションの前に導入されます。 同時コレクションはJDK1.5で導入されていますが、つまり、従来のコレクションの後に導入されています。

  1. Javaコレクションのnext()とhasNext()の違いは?

    Javaには、コレクションオブジェクトの要素を取得するためのIteratorクラスとListIteratorクラスが用意されています。 hasNext()メソッド hasNext() これらのインターフェイスのメソッドは、コレクションオブジェクトに次の要素がある場合はtrueを返し、そうでない場合はfalseを返します。 例 import java.util.ArrayList; import java.util.Iterator; public class hasNextExample{    public static void main(String[] arg

  2. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり