Se garantiza que un swingWorker lanzará un evento de cambio de propiedad estatal al finalizar?
Tengo una clase que abarca una cantidad deSwingWorkers
y los ejecuta uno a la vez en un cierto orden. Uso unReentrantLock
para asegurarse de que solo un trabajador se ejecute a la vez. Normalmente siempre desbloquearía una cláusula finalmente, pero necesito que permanezca bloqueada hasta que el trabajador complete.
nextWorker.getPropertyChangeSupport().addPropertyChangeListener("state",
new PropertyChangeListener()
{
@Override
public void propertyChange(PropertyChangeEvent evt)
{
if (evt.getNewValue().equals(SwingWorker.StateValue.DONE))
{
executionLock.unlock();
}
}
});
Si este no es el caso, ¿está garantizado que se llamará ()? Preferiría no llamar al desbloqueo de esta manera, ya que violaría la encapsulación en algún grado.
Debido a la naturaleza del proyecto, es probable que esto aparezca en una revisión de código. En ese caso, sería útil tener una fuente verificable. Hasta ahora no he podido encontrar uno.