В Java Docs сказано, что методы StringBuffer
: . Тогда почему я все еще нужно вручную synchronize
StringBuffer
в примере, приведенном в этом вопросе: hereПочему нам требуется синхронизировать StringBuffer, когда его методы уже синхронизированы.
Я где-то читал, что он не достоин того, чтобы использовать StringBuffer
над StringBuilder
, потому что он (StringBuffer) происходит медленнее, чем StringBuilder
. Таким образом, эти два значения аналогичны Vector
и ArrayList
.
Но мне было интересно, почему мы называем его (StringBuffer
или Vector
Thread Safe
) а классы, когда мы по-прежнему необходимо вручную вложить их в synchronized
блоке, как в примере, приведенном в ссылке выше. Почему я не могу полагаться на них. Может кто-нибудь объяснить & ясный сомнений.
Есть ли способ проверить, что StringBuffer действительно является классом Thread Safe.
если я прокомментирую блок 'synchronized', то потоки не должны мешать друг другу в течение метода setCharAt(). Не метод 'setCharAt()' синхронизирован в классе 'StringBuffer'. Но сцена противоположна, то есть потоки вмешиваются во время 'setCharAt()', когда я комментирую блок «synchronized». – JPG