Есть ли способ ограничить доступ к атрибуту в контексте сервлета - PullRequest
1 голос
/ 10 декабря 2010

Мне нужно изменить значение объекта, который находится в контексте Sevlet во время выполнения. Мое приложение гарантирует, что только один поток будет сбрасывать значение этого атрибута в Servletcontext за один раз

Проблема : моя проблема в том, что один поток устанавливает значение объекта, и многие другие потоки будут иметь доступ для чтения к этому объекту, и все они могут читать странные значения, поскольку объект может быть наполовину установлен в время его использования

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

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Поместите ConcurrentHashMap в качестве атрибута servletcontext и управляйте нужным объектом в качестве элемента карты.

1 голос
/ 10 декабря 2010

ServletContext.setAttribute () всегда требуется синхронизация

Поместите ServletContext.setAttribute () в блок синхронизации.

, так что только один поток будет одновременно иметь значение объявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...