ImmutableList Гуавы. Ориентированный на многопотоковое исполнение разработчик?

Что является гарантиями потокобезопасности ImmutableList Гуавы. Разработчик? javadocs не говорят.

11
задан Brian Harris 20 May 2010 в 03:01
поделиться

2 ответа

В то время как неизменяемые классы Guava являются потокобезопасными, их построители - нет. Для большинства приложений только один поток будет взаимодействовать с любым конкретным экземпляром Builder.

Хотя отсутствие безопасности потоков обычно не требуется документировать, такая документация Javadoc может иметь смысл для разработчиков неизменяемых коллекций. Люди могут быть удивлены тем, что ImmutableList является потокобезопасным, а ImmutableList.Builder - нет.

31
ответ дан 3 December 2019 в 01:06
поделиться

Если потокобезопасность не упомянута в javadocs, не предполагайте ее!

Более серьезно, "нет".

Я бы также предпочел, чтобы javadocs ImmutableList и друзей включали такое - довольно очевидное, да - замечание (чтобы вам не приходилось предполагать это самим), потому что "очевидное" не всегда верно. Буквально на днях я обсуждал scala.List, неизменяемый список, и некоторые удивительные проблемы, которые он может вызвать при неправильном обмене между потоками (через гонку данных), о которых люди не подумали, потому что они видят слово "неизменяемый" на жести, плюс они приравнивают "неизменяемый == потокобезопасный", поэтому стоит подстраховаться даже при документировании "очевидных" аспектов потокобезопасности.

13
ответ дан 3 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: