Pregunta

Tengo un problema extraño con un método esperado de clase de condición en Java SE 6. El problema es que el método de espera no siempre lanza una excepción mientras se interrumpe por otro hilo.

En documentación se escribe que el IE se arroja cuando:

... algún otro hilo interrumpe el hilo actual, y la interrupción de la suspensión de hilo es compatible ...

Cómo interpretar este subsentense: "y la interrupción de la suspensión de hilos es compatible"

Se ve imposible de no lanzar una excepción. ¿Alguna vez has tenido un problema similar?

¿Fue útil?

Solución

No es imposible no lanzar InterruptedException ¿Qué pasa si el objeto ha recibido señal a través de signal o signalAll API, la especificación dice que estos dos métodos despertarán cualquier hilo que esté esperando en esta condición.

Otros consejos

Tuve un problema similar, había un hilo esperando en una condición:

Lock someLock = new ReentrantLock();
Condition someCondition = someLock.newCondition();
...
someCondition.await(timeout, TimeUnit.MILLISECONDS);

y enviar thethread.interrupt () no funcionó. Resultó que, por error, otro hilo estaba sosteniendo un somelock bloqueado, así que await() fue bloqueado. Después de agregar someLock.unlock() En el lugar apropiado, espera () comenzó a lanzar interruptedException como se esperaba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top