У меня есть одноэлементный bean-компонент Spring (область действия по умолчанию). Таким образом, один экземпляр будет использоваться несколькими потоками. Однако я немного запутался в отношении безопасности потоков, по-видимому, все bean-компоненты Spring являются потокобезопасными, если они не имеют состояния, но мой bean-компонент не является без состояния, он имеет различные переменные экземпляра, которые используются каждым запросом / другими контроллерами / классами.
Вот начало моего одноэлементного bean-компонента:
public class PcrfSimulator {
private final CustomGxSessionIdCacheImpl gxSessionIdCache = new CustomGxSessionIdCacheImpl();
private final PcrfRecord pcrfRec = new PcrfRecord();
private final ResponseConditions responseConditions = new ResponseConditions();
public CustomGxSessionIdCacheImpl getGxSessionIdCache() {
return gxSessionIdCache;
}
public ArrayList<Rule> getRules() {
return pcrfRec.getRules();
}
Итак, к вышеперечисленным полям будут обращаться несколько потоков - достаточно ли пометить эти поля как изменчивые, или мне нужно отметить методы, которые обращаются к ним (там много не только в этом классе, но и в других контроллерах / классах) с синхронизацией и использованием ожидания / уведомления и т. д.
Большое спасибо!