Vector, Hashtable. В чем минус синхронизированности?

267
01 июля 2017, 09:38

Vector, HashTable, Stack являются устаревшими коллекциями, и пишут что их не используют в виду синхронизированности их методов. В чем минус синхронизации? Если однопоточная среда, это как-то влияет на их работу? Потокобезопасность это же хорошо. Если они устаревшие, зачем создавали синхронизированные коллекции в concurrent пакете? Извините за тупой вопрос, очень интересно просто. Заранее спасибо.

Answer 1

Потокобезопасность это же хорошо.

Потокобезопасность не бесплатна, точнее очень не бесплатна, именно поэтому есть потокобезопасные и не потокобезопасные коллекции.

Если однопоточная среда, это как-то влияет на их работу?

Такие коллекции работают значительно медленее, чем не синхронизированные аналоги

Если они устаревшие, зачем создавали синхронизированные коллекции в concurrent пакете?

Новые синхронизированные коллекции используют более быстрый алгоритм, когда блокируется не вся коллекция целиком при каждом чихе, а только часть (блок), поэтому Vector, HashTable, Stack не стоит использовать ни в многопоточности (они работают медленнее, чем новые коллекции), ни в однопоточном - они просто избыточны.

Если интересно более подробно разобраться с коллекциями советую посмотреть мою статью

P.S. В принципе, если вам производительность не важна, то ничего страшного не случится если вы будите использовать Vector, HashTable и т.п. вместо ArrayList, HashMap и т.д., они будут работать нормально. Но их использование считается плохим кодом и признаком плохого знания языка.

READ ALSO
Шейдеры и ShapeRendere. LibGDX

Шейдеры и ShapeRendere. LibGDX

Пытаюсь применить ShaderProgram к ShapeRenderer, передаю шейдер в конструктор, получаю ошибку:

286
libvlc удаление MediaPlayer

libvlc удаление MediaPlayer

Может кто использовал библиотеку libvlcПроблема в том что когда пытаюсь уничтожить объект класса MediaPlayer то все напрочь зависает минуты на две,...

217
Server Tomcat v8.5 Server at localhost failed to start

Server Tomcat v8.5 Server at localhost failed to start

Всем приветБыло все норм

351
Сохранить результаты тестов в SQLite или SharedPreference?

Сохранить результаты тестов в SQLite или SharedPreference?

Я новичок в Java и в AndroidПишу первое приложение, это тесты ПДД

166