Дело в том, что реакции, которые вы пишете в методе "act", не должны касаться синхронизации.Кроме того, при условии, что вы не выставляете состояние актера, ваша программа будет полностью поточно-ориентированной.
То есть , а не , чтобы сказать, что синхронизация вообще отсутствует: синхронизацияАбсолютно необходимо [1] реализовать доступ на чтение / запись к почтовому ящику субъекта (т. е. отправку и получение сообщений) и также для обеспечения согласованности личного состояния субъекта при любых последующих реакциях.
Это достигается самой библиотекой, и вам, пользователю, не нужно заботиться о том, как это делается.Ваше состояние безопасно (вам даже не нужно использовать изменяемые поля), потому что JMM происходит до того, как гарантирует.То есть, если запись в основную память происходит до точки синхронизации, то при любом чтении, происходящем после синхронизации, будет наблюдаться состояние основной памяти, оставленное записью.
[1] - под «синхронизацией» я подразумеваю некоторый механизм, гарантирующий отношения «происходит до» в модели памяти Java.Это включает ключевое слово synchronized
, модификатор volatile
и / или java.util.concurrent
блокирующие примитивы