- private void initialize() {
- if(!initialized.compareAndSet(false, true)) {
- return;
- }
+ // sychronize this method so that, in case of concurrent access to getAndRemove(),
+ // no one ends up with partially initialized data
+ private synchronized void initialize() {