voilà, j'essaye de gerer (tant bien que mal) la pause ds l'execution d'un thread. Pour pas avoir a réécrire ce code, j'ai créé une classe ControllableThread comme suit :
l'ExecutionLock est un objet simple qui est censé me permettre de lancer le travail du thread.
Code :
publicclass ExecutionLock
{
privateint monitorNumber = 0;
public ExecutionLock()
{}
public synchronized void getMonitor()
{
this.monitorNumber++;
}
}
La méthode est totalement bateau, elle permet d'obtenir le monitor sur l'objet, comme le dit si bien la javadoc.
Donc, ici, si je lance le thread, il est censé se mettre directement en pause, car le champ command est a stop. Ce qu'il fait donc, mais la ligne this.lock.wait() renvoie une exception IllegalMonitorStateException().
Je ne comprends pas pourquoi le lock m'envoie cette exception, vu que le thread a pris le monitor de cet objet 13 lignes plus haut?? Une idée?
Marsh Posté le 07-01-2007 à 13:17:33
Bonjour,
voilà, j'essaye de gerer (tant bien que mal) la pause ds l'execution d'un thread. Pour pas avoir a réécrire ce code, j'ai créé une classe ControllableThread comme suit :
l'ExecutionLock est un objet simple qui est censé me permettre de lancer le travail du thread.
La méthode est totalement bateau, elle permet d'obtenir le monitor sur l'objet, comme le dit si bien la javadoc.
Donc, ici, si je lance le thread, il est censé se mettre directement en pause, car le champ command est a stop.
Ce qu'il fait donc, mais la ligne this.lock.wait() renvoie une exception IllegalMonitorStateException().
Je ne comprends pas pourquoi le lock m'envoie cette exception, vu que le thread a pris le monitor de cet objet 13 lignes plus haut??
Une idée?