common
Class StoppableThread

java.lang.Object
  extended by java.lang.Thread
      extended by common.StoppableThread
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
TransfertMaster, TransfertSlave

public class StoppableThread
extends Thread

Permet d'arrêter proprement un Thread.

See Also:
quit()

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
private  boolean isFree
          Devient vrai si les ressources liées à cette classe ont déjà été libérées La variable est volatile au lieu d'être synchronized (suffisant car le type est simple, voir l'exemple dans la documentation).
protected  boolean quitQuery
          Devient vrai si une demande d'arrêt a été faite La variable est volatile au lieu d'être synchronized (suffisant car le type est simple, voir l'exemple dans la documentation).
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
StoppableThread()
           
 
Method Summary
protected  void doFree()
          Prends les dispositions pour libérer les ressources utilisées dans cette classe.
protected  void doQuit()
          Prends les dispositions pour que le thread termine et sorte seul de sa méthode run().
protected  void free()
          Libère les ressources liées à la classe.
 void quit()
          Ferme le thread.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, run, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

isFree

private volatile boolean isFree
Devient vrai si les ressources liées à cette classe ont déjà été libérées La variable est volatile au lieu d'être synchronized (suffisant car le type est simple, voir l'exemple dans la documentation).

See Also:
free()

quitQuery

protected volatile boolean quitQuery
Devient vrai si une demande d'arrêt a été faite La variable est volatile au lieu d'être synchronized (suffisant car le type est simple, voir l'exemple dans la documentation).

See Also:
quit()
Constructor Detail

StoppableThread

public StoppableThread()
Method Detail

doQuit

protected void doQuit()
Prends les dispositions pour que le thread termine et sorte seul de sa méthode run().

See Also:
Thread.run(), quitQuery, quit()

doFree

protected void doFree()
Prends les dispositions pour libérer les ressources utilisées dans cette classe.

See Also:
Thread.run(), isFree, free()

free

protected final void free()
Libère les ressources liées à la classe. Cette méthode ne devrait pas être appelée directement. Cependant elle doit être appelée à la fin de la méthode run() du thread. Cette méthode vérifie d'abord si les ressources utilisées n'ont pas déjà été libérées, ensuite elle appelle la méthode doFree().

See Also:
Thread.run(), isFree, doFree()

quit

public void quit()
Ferme le thread. Si le thread est actif, la méthode doQuit() fera que le thread s'arrête correctement. Sinon, la méthode libère les ressources liées à la classe en appelant free(). La fonction ne retourne pas forcément immédiatement (elle peut attendre des thread fils), mais retourne toujours sans attendre que ce thread termine. On peut appeler récursivement les méthodes quit() entre threads sans craindre un problème de "dead-lock". Il faudra ainsi appeler join() pour attendre la fin du thread.

See Also:
Thread.join(), free(), doQuit()