Актеры предназначены для последовательной обработки сообщений. Это облегчает их рассуждение: вы получаете одно сообщение за раз, поэтому любые переменные в субъекте (если они не изменены кем-либо еще) могут быть изменены, не думая о параллелизме. Это самый эффективный метод? Точно нет! Но несколько неэффективный код, который работает правильно почти всегда лучше, чем высокоэффективный код, который нарушен .
То, о чем вы просите, прямо противоположно: вы хотите явно подумать о параллелизме («Я знаю, что 99% обращений будут считываться и, следовательно, могут происходить параллельно!»), Чтобы повысить скорость обработки. В этом случае вы, вероятно, захотите использовать java.util.concurrent.locks.ReentrantReadWriteLock
для непосредственного управления доступом к изменяемой переменной (если тип доступа, найденный в java.util.concurrent.atomic._
, не работает для вас). Просто помните, что теперь вы взяли на себя бремя правильной блокировки, и будьте осторожны.