I want to implement a kind of counter approach.
The solution for now is something like:
HashMap<Integer, Integer> listeners = new HashMap<>();
public void increaseListener(int id) {
synchronized(listeners) {
if(listeners.containsKey(id)) {
listeners.put(id, listeners.get(id) + 1);
}
else {
listeners.put(id, 1);
}
}
}
public void decreaseListener(int id) {
synchronized(listeners) {
if(listeners.containsKey(id)) {
return;
}
listeners.put(id, listeners.get(id) - 1);
if(listeners.get(id) == 0) {
// no more listeners do something
}
}
}
Is there a better way to do it? E.g. replacing hashmap with some other constructs or instead of integers have atomic references or some other way?
Aucun commentaire:
Enregistrer un commentaire