Comment déboguer ConcurrentModificationException?

J'ai rencontré ConcurrentModificationException et en les regardant, je ne vois pas la raison pourquoi il se passe; la zone de jeter de l'exception et de tous les lieux de modifier la collection sont entourés par

synchronized (this.locks.get(id)) {
  ...
} //locks is a HashMap<String, Object>;

J'ai essayé de rattraper le agaçants fil, mais tout ce que je pouvais clou (en mettant un point d'arrêt dans l'exception), c'est que le fait de lancer thread possède le moniteur tandis que l'autre thread (il y a deux fils dans le programme) dort.

Comment dois-je procéder? Que faites-vous habituellement lorsque vous rencontrez similaire problèmes de threading?

OriginalL'auteur Dani | 2009-05-08