Поток Локальные рекомендации в мощном серверном приложении среднего уровня - PullRequest
7 голосов
/ 17 января 2011

Рекомендуется ли использовать ThreadLocal для хранения контекста потока?

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

Примечание: мы не являемсяпостроение этого на архитектуре SOA.

Перед запуском каждой службы мне нужно дать ей состояние, в котором есть некоторый контекст службы, который является переменной картой для работы.Эта карта переменных используется совместно, когда службы работают параллельно.

Теперь, например, службе необходимо проверять погоду, она должна быть остановлена ​​или установлена ​​тайм-аут на основе некоторых параметров, связанных с потоками.

Вопрос: Является ли хорошим подходом сохранить контекст потока внутри локального потока, а затем создать API-интерфейс over service для доступа к параметрам через эти переменные.

Это поможет мне скрыть сложное поведениеи это не раскрыло бы мои внутренние вещи.

Спасибо, Адитья

Ответы [ 2 ]

1 голос
/ 17 января 2011

Похоже, что ваш серверный фреймворк должен предоставить вам средства для реализации этой функциональности более простым способом - если вы не реализуете свой собственный фреймворк.

Теперь, например, службе необходимо проверять погоду, она должна быть остановлена ​​или установлена ​​тайм-аут на основе некоторых параметров, связанных с потоками.

Контейнер EJB обеспечивает такую ​​функциональность. EJB-компоненты также предоставляют контекст сеанса и средства для обеспечения возможности восстановления контекста, если выполнение передается между потоками (путем пассивации + активации).

0 голосов
/ 17 января 2011

Вы можете использовать ThreadLocal довольно свободно, но вы должны четко определить свою модель потока (посмотрите, есть ли у вас какой-либо элемент управления созданием потока) ... также имейте в виду, что обеспечение состояния, сохраненного в ThreadLocal, может не соответствовать вашему ожиданию если вы полагаетесь на какой-либо код очистки.

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

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