Контрольный список для потокобезопасной java в appengine

Мой проект java appengine не сохраняет никакого состояния между запросами, за исключением следующих случаев использования Memcache:

  • Objectify использует memcache для кеширования данных в хранилище
  • Я использую memcache как способ пакетной обработки задачи очистки после нескольких запросов (например, if (кэш памяти не считает, что задача очистки уже запущена) запланировать другую задачу очистки ).

У меня нет глобальных / статических ссылок на какие-либо объекты, кроме:

  • Текущий аутентифицированный пользователь хранится в статическом объекте ThreadLocal . Это означает, что каждый запрос будет получать свою собственную копию пользователя, не так ли?
  • У меня есть класс, который обрабатывает все манипуляции с данными, и экземпляр хранится как своего рода глобальная переменная в статическом объекте DataCoordinator .

На что мне нужно обратить внимание, чтобы сделать мой код потокобезопасным? Нужно ли мне вставлять ключевое слово synchronized в каждое объявление метода в моей реализации DataCoordinator , поскольку к нему могут обращаться несколько потоков? Верно ли, что объект ThreadLocal всегда будет создавать отдельный объект User для каждого потока, так что каждый запрос будет аутентифицироваться отдельно?

Я всего лишь новичок в потокобезопасном мышлении. Что я должен прочитать?

Спасибо за любую помощь и извините за отсутствие конкретики.

6
задан Riley Lark 30 October 2011 в 23:58
поделиться