Suponiendo que la clase Conjunto no se puede modificar, tu problema es que ningún thread puede llamar a operacionEspecial() sobre la misma instancia de conjunto mientras otros threads estén iterando.
La solución es, que cada thread utilice su propia instancia de conjunto, o bien iterar el conjunto dentro de un synchronized.
Yo, antes de usar la funcionTriste de los reintentos, utilizaría el patrón representante (proxy) para sincronizar lo que crea conveniente (o necesario) de las llamadas a los métodos de la clase Conjunto. Vamos, aplicar lo que se conoce como el algoritmo de la tortilla de patatas.
Synchronized
(Puntos:2)( Última bitácora: Miércoles, 12 Junio de 2013, 10:09h )
Suponiendo que la clase Conjunto no se puede modificar, tu problema es que ningún thread puede llamar a operacionEspecial() sobre la misma instancia de conjunto mientras otros threads estén iterando.
La solución es, que cada thread utilice su propia instancia de conjunto, o bien iterar el conjunto dentro de un synchronized.
Yo, antes de usar la funcionTriste de los reintentos, utilizaría el patrón representante (proxy) para sincronizar lo que crea conveniente (o necesario) de las llamadas a los métodos de la clase Conjunto. Vamos, aplicar lo que se conoce como el algoritmo de la tortilla de patatas.