является ли обработчик событий OSGI потокобезопасным

#osgi

#osgi

Вопрос:

В моем приложении мы используем Event admin для публикации событий, и одновременно запускается несколько событий. Они обрабатываются обработчиком событий. В обработчике событий были объявлены некоторые частные переменные и использованы в handleEvent() методе.

Вызовет ли это какие-либо проблемы с безопасностью потоков? Объявление переменных как частных в обработчике событий потокобезопасно?

Ответ №1:

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

Объявление переменных частными совершенно не связано с безопасностью потоков. Важен не статус доступа, а одновременный доступ.

Вы регулируете доступ с помощью синхронизированного ключевого слова, блокировок или конструкций без блокировок.

Комментарии:

1. Спасибо, Питер, поэтому возможно, что поля, объявленные на уровне сервиса (класса), могут быть доступны и изменены одновременно, что приведет к неопределенному поведению, из-за этого вместо синхронизации или блокировок мы можем просто использовать локальные переменные уровня метода и использовать его.