Безопасны ли «грязные чтения» для терракоты?

"Грязное чтение", означающее чтение значения объекта, даже если он заблокирован записью другим потоком, на сайте Terracotta является описал, но я слышал, что их не следует использовать, даже если вас не волнует возможность что вы можете получить старые данные при грязном чтении заблокированного объекта.

Есть ли у кого-нибудь опыт использования грязных чтений в Terracotta, и безопасно ли их использовать, если вас не волнует возможность чтения старого значения?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
398
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Грязное чтение - это грязное чтение. Terracotta, будучи распределенным / кластеризованным, только добавляет возможность читать даже более старые значения общего изменяемого состояния, к которому вы получаете доступ, без надлежащей синхронизации.

Вы должны отметить, что в модели памяти в Java 5 вам не гарантируется, что Когда-либо прочитает обновленное значение, если вы не используете правильную синхронизацию. Terracotta может решить воспользоваться этой возможностью. Фактически, любая JVM может на досуге воспользоваться этим. Даже если он может работать на вашем компьютере, он может сломаться на других машинах. Он может сломаться при незначительных обновлениях JVM, и он может сломаться для одной и той же версии той же JVM на другом процессоре.

Имея это в виду, вы можете сказать, что грязное чтение небезопасно в любой JVM ... Если вы не возражаете против возможности того, что вы никогда не сможете прочитать обновления, которые делают другие потоки - маловероятная ситуация, но Это могло случиться.

Кроме того, когда вы на самом деле переходите по ссылке на Terracottas wiki, в ней говорится, что статья была удалена и шаблон не приветствуется.

Да, он был удален в результате моего разговора с инженером по продажам Terracotta.

sanity 28.09.2008 00:28

Я разработчик Terracotta. Суть ответа такая же, как уже отмечал Кристиан Вест Хансен - точно так же, как JVM не дает никаких гарантий относительно видимости обновлений разделяемого объекта, к которому осуществляется доступ без надлежащей синхронизации, Terracotta также не может дать никаких гарантий относительно грязного чтения из файла. кластерный объект.

Ссылка действительно была намеренно удалена и заменена предупреждением не использовать этот шаблон.

Другие вопросы по теме