これは何度も聞かれる質問ですが、Java の初心者 (私のようなもの) は、与えられた答えを深く理解できるとは限りません。
私はJavaの本を何冊か読んでいますが、そのうちの1つで、VectorとArrayListの違いは、前者が同期され、後者が同期されていないことです(StringBufferとStringBuilderと同じです)。
そして、この本は、「必要に応じて、同期されていないコードに同期を「追加」できる」と説明しています。
この投稿で、 Brian Roach は、「StringBuffer と Vector にはスレッド同期があり、オーバーヘッドが追加されます (必要でない限り、ただし、それを新しいクラスに追加する方法はあります) 」 と説明しています。
だから、私は3つの質問があります:
1) 同期によってオーバーヘッドが増えるが、必要に応じて新しいクラスに追加できる場合、StringBuilder と ArrayList に同期を追加する代わりに、StringBuffer と Vector を使用しないのはなぜですか?
2) クラスに同期を追加するにはどうすればよいですか?
3) 同期の目的は何ですか?
初心者の質問で申し訳ありませんが (もっと本を読まなければならないことはわかっています)、これらの概念を理解するのは簡単ではありません。