3 import java
.util
.ArrayList
;
4 import java
.util
.HashSet
;
7 public class AbstractEventGenerator
<T
extends Listener
> implements EventGenerator
<T
> {
9 public synchronized void registerListener(T listener
) {
10 listeners
.add(listener
);
13 public synchronized void removeListener(T listener
) {
14 listeners
.remove(listener
);
17 protected synchronized Iterable
<T
> listeners() {
18 return new ArrayList
<T
>(listeners
);
21 private volatile Set
<T
> listeners
= new HashSet
<T
>();