java.utilパッケージにあるCollectionインターフェースやMapインターフェースを実装したクラス(以降、コレクションクラス)の一部(ArrayListやHashMapなど)は、同期化機構を実装していません。
このため、複数のスレッドから同一のコレクションクラスにアクセスして、データの追加や削除などの操作を行うと、内部データに矛盾が発生します。その結果として、システム異常を引き起こす場合があります。
複数のスレッドから、コレクションクラスを操作する場合は、以下のいずれかの処置を行ってください。
コレクションクラスオブジェクトをカプセル化し、同期処理機能を持つクラスを定義する
コレクションクラスを拡張し、同期処理を行うメソッドを定義する
CollectionsクラスのsynchronizedXXXメソッドを使って、コレクションクラスをラッピングする
VectorやHashtableなど同期化機構を持つクラスに置き換える
詳細は、JDKドキュメントのJava SE API のjava.utilパッケージを参照してください。