Необходимо ли синхронизировать методы классов, которые не имеют состояния?
Необходимо ли синхронизировать методы классов, которые не имеют состояния? Например, у меня есть класс:
@Slf4j
public class SomeServiceImpl implements SomeServiceService {
@Setter
private SomeDao someDao;
@Override
public void doSomething(Event event) {
Map<String, Object> map = new HashMap<String, Object>();
val date = new Date();
event.put("someDate", date);
val someId = UUID.randomUUID().toString();
event.put("someId", someId);
...
someDao.save(event);
}
}
Если выполнить этот код в нескольких потоках, каждый поток создаст свою копию локальных переменных? Этот метод будет вызываться из множества потоков, например. И я не уверен, что без синхронизации можно обойтись здесь. Но и не уверен, что она нужна. Например, что будет в случае @Utils-классов, нужно ли синхронизировать их методы? DAO здесь - это Spring синглтон.
Ответы (1 шт):
Автор решения: Klioda
→ Ссылка
Локальные переменные пересекаться не будут -- у каждого потока свой стек. Вопрос только к полю someDao -- надо ли синхронизировать зависит от реализации.