Muszę napisać fasolę, która będzie działała jako licznik tego, ile razy była dostępna.JEE6 @ApplicationScoped bean i współbieżność
mam na myśli używając @ApplicationScoped
Bean z AtomicInteger
jak ten
@ApplicationScoped
class VisitsCounter {
private AtomicInteger counter;
@PostConstruct
public void construct() {
counter = new AtomicInteger(0);
}
public int visited() {
return counter.incrementAndGet();
}
}
Moje pytanie brzmi: Czy to jest ok, rozważając wiele żądań w tym samym czasie? Czy muszę grać z adnotacjami @ConcurrencyManagement
i @Lock
? Przypuszczam, że Atomic*
powinien załatwić sprawę, ale nie jestem pewien.
Czy to samo dotyczy sytuacji, gdy mam kolekcje z wątkami jako pola? Na przykład. mówi, że mam operacje naprawdę wątkowe bezpieczne?
Mówi się, że adnotacje i blokady współbieżne powinny być używane w przypadku modyfikacji stanu fasoli, ale co, jeśli moja lista już zajmuje się bezpieczeństwem wątków?
Zaimplementowane, nie widzę żadnych problemów z współbieżnością. – McDowell