Что такое неизменные объекты?

Каковы отношения с потокобезопасностью и неизменными объектами? Это делает легче совместно использовать единственный ресурс среди нескольких потоков? Если неизменные объекты являются не сохраняющими состояние, они могут быть объединены в контейнере как контейнер J2EE?

спасибо

6
задан Dunith Dhanushka 19 January 2010 в 17:46
поделиться

3 ответа

Объекты ThreadSafe являются объектами, которые позволяют получать доступ одновременно несколькими потоками. Их гарантия их реализации (например, с помощью блокировков / синхронцизированных методов / ...), что они не попадут в неверное состояние. Кроме того, не должно быть потери данных.

Неподвижные объекты не могут быть изменены после их создания. Итак: Да, они какой-то без гражданства.

Поскольку неизменные объекты не могут быть изменены, нет необходимости в блокировке - чтение доступа к объектам всегда ThreadSafe (когда не модифицируют переменные). Поэтому реальные неизменные объекты всегда являются ThreadSafe.

5
ответ дан 8 December 2019 в 12:20
поделиться

Неподвижные объекты - это объекты, которые не могут быть изменены. Если объект не может быть изменен, то нет беспокойства о том, что конкурирующая нить будет изменять состояние объекта «За спиной» выполненного потока, и поэтому неизменных объектов не нужно защищать через синхронизацию или какую-то другую технику.

10
ответ дан 8 December 2019 в 12:20
поделиться

Immutable Object: Объект, который не изменяет своего внутреннего состояния.

Связь с потокобезопасностью: если объект не может быть мутирован, то безопасно использовать его в потоках, т.е. нет необходимости иметь блокировки или тому подобное для обеспечения согласованности - в потоках.

4
ответ дан 8 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

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