You don't need this. You just need SynchrnoizedRunListener to implement equals. `List.remove(o)` uses `o.equals(list.get(i))``