schmitzm.lang
Class WorkingThread

java.lang.Object
  extended by java.lang.Thread
      extended by schmitzm.lang.WorkingThread
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
StepThread, SwingWorker

public abstract class WorkingThread
extends Thread

Diese Klasse stellt einen "arbeitenden" Thread dar (im Gegensatz zum "konkurrierenden" Thread, der mit anderen Threads auf gemeinsame Ressourcen zugreift). Der WorkingThread kann

Version:
1.0
Author:
Martin Schmitz

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
protected  Vector listeners
          Speichert die Listener, die auf den Thread horchen.
protected  int mode
          Speichert den aktuellen Thread-Status.
static int MODE_PAUSE
          Modus "Thread pausiert und kann fortgesetzt werden".
static int MODE_READY
          Modus "Thread ist bereit, gestartet zu werden".
static int MODE_RUN
          Modus "Thread ist initialisiert, und laeuft".
static int MODE_TERMINATE
          Modus "Thread ist beendet".
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
WorkingThread()
          Erzeugt einen neuen Thread.
WorkingThread(String name)
          Erzeugt einen neuen Thread.
 
Method Summary
 boolean addThreadListener(WorkingThreadListener listener)
          Fuegt einen Listener hinzu.
protected  void checkBreakingCommands()
          Prueft, on ein Unterbrechnung-Signal erfolgt ist (pause() oder terminate()).
protected  void fireThreadInitialised()
          Informiert alle WorkingThreadListener darueber, dass der Thread initialisiert wurde.
protected  void fireThreadPaused()
          Informiert alle WorkingThreadListener darueber, dass der Thread pausiert.
protected  void fireThreadResumed()
          Informiert alle WorkingThreadListener darueber, dass der Thread (nach einer Pause) wieder arbeitet.
protected  void fireThreadStarted()
          Informiert alle WorkingThreadListener darueber, dass der Thread gestartet wurde.
protected  void fireThreadStopped()
          Informiert alle WorkingThreadListener darueber, dass der Thread gestoppt wurde oder ausgelaufen ist.
 int getMode()
          Liefert den Status, in dem sich der Thread gerade befindet.
protected  void goSleep()
          Legt den Thread schlafen, bis er durch wakeUp() wieder aktiviert wird.
 boolean isRunning()
          Checkt, ob der Thread aktuell am arbeiten ist.
 boolean isSleeping()
          Checkt, ob der Thread aktuell am warten ist.
 void pause()
          Beendet (temporaer) die Arbeit des Threads.
protected abstract  void performDispose()
          Implementiert alle Aktionen, die nach Auslaufen des Threads durchzufuehren sind. z.B. sollte der Thread alle verteilten Listener von anderen Objekten wieder entfernen, damit er nicht mehr informiert wird.
protected abstract  void performInit()
          Wird beim allerersten Aufruf der start()-Methode aufgerufen, um Thread-Komponenten zu initialisieren.
protected abstract  void performWork()
          Implementiert den Arbeitsablauf des Threads.
 boolean removeThreadListener(WorkingThreadListener listener)
          Entfernt einen Listener von dem Thread.
 void run()
          Implementiert den Arbeitsablauf des Threads.
 void start()
          Startet den Thread (erneut).
 void terminate()
          Beendet den Thread, in dem die Run-Methode auslaeuft.
 String toString()
          Liefert den Namen des Threads.
protected  void wakeUp()
          Aktiviert den Thread wieder, nachdem er durch goSleep() Schlafen gelegt wurde.
 
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, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MODE_READY

public static final int MODE_READY
Modus "Thread ist bereit, gestartet zu werden".

See Also:
Constant Field Values

MODE_RUN

public static final int MODE_RUN
Modus "Thread ist initialisiert, und laeuft".

See Also:
Constant Field Values

MODE_TERMINATE

public static final int MODE_TERMINATE
Modus "Thread ist beendet".
Der Thread kann nicht neu initialisiert oder gestartet werden!

See Also:
Constant Field Values

MODE_PAUSE

public static final int MODE_PAUSE
Modus "Thread pausiert und kann fortgesetzt werden".

See Also:
Constant Field Values

mode

protected int mode
Speichert den aktuellen Thread-Status.


listeners

protected Vector listeners
Speichert die Listener, die auf den Thread horchen.

Constructor Detail

WorkingThread

public WorkingThread(String name)
Erzeugt einen neuen Thread.

Parameters:
name - Bezeichnung fuer den Thread

WorkingThread

public WorkingThread()
Erzeugt einen neuen Thread.

Method Detail

getMode

public int getMode()
Liefert den Status, in dem sich der Thread gerade befindet.


toString

public String toString()
Liefert den Namen des Threads. Falls dieser nicht gesetzt ist, wird super.toString() zurueckgegeben.

Overrides:
toString in class Thread

goSleep

protected void goSleep()
Legt den Thread schlafen, bis er durch wakeUp() wieder aktiviert wird. Loest fireThreadPaused() aus.

See Also:
wakeUp()

wakeUp

protected void wakeUp()
Aktiviert den Thread wieder, nachdem er durch goSleep() Schlafen gelegt wurde. Loest fireThreadResumed() aus.

See Also:
goSleep()

start

public void start()
Startet den Thread (erneut). Beim allerersten Mal wird die performInit()-Methode aufgerufen.

Overrides:
start in class Thread
See Also:
performInit()

pause

public void pause()
Beendet (temporaer) die Arbeit des Threads. Ueber die start()- oder step()-Methode kann die Arbeit wieder aufgenommen werden.


terminate

public void terminate()
Beendet den Thread, in dem die Run-Methode auslaeuft. Danach kann der Thread nicht mehr neu gestartet werden.


isRunning

public boolean isRunning()
Checkt, ob der Thread aktuell am arbeiten ist.


isSleeping

public boolean isSleeping()
Checkt, ob der Thread aktuell am warten ist. Dies ist er, wenn er manuell in den Pause-Mode versetzt wurde.

See Also:
pause()

run

public void run()
Implementiert den Arbeitsablauf des Threads. Sollte nicht manuell aufgerufen werden, da der aufrufende Prozess sonst blockiert. Loest zunaechst fireThreadStarted() aus und fireThreadStopped() bevor der Thread auslaeuft.

Specified by:
run in interface Runnable
Overrides:
run in class Thread
See Also:
start(), performWork()

checkBreakingCommands

protected void checkBreakingCommands()
Prueft, on ein Unterbrechnung-Signal erfolgt ist (pause() oder terminate()).
Bei pause() wird der Thread sofort schlafen gelegt. Bei terminate() wird eine ThreadDeath-Exception geworfen. Diese Methode kann/sollte an geeigneten Stellen im Arbeitsablauf aufgerufen werden.


performInit

protected abstract void performInit()
Wird beim allerersten Aufruf der start()-Methode aufgerufen, um Thread-Komponenten zu initialisieren. Sollte fireThreadInitialised() aufrufen!


performWork

protected abstract void performWork()
Implementiert den Arbeitsablauf des Threads.
Zwischendurch sollte an geeigneter Stelle immer wieder die checkBreakingCommands()-Methode aufgerufen werden, um auf Pause- oder Terminate-Signale zu reagieren.


performDispose

protected abstract void performDispose()
Implementiert alle Aktionen, die nach Auslaufen des Threads durchzufuehren sind. z.B. sollte der Thread alle verteilten Listener von anderen Objekten wieder entfernen, damit er nicht mehr informiert wird. Diese Methode wird vor dem Auslaufen der run()-Methode aufgerufen.


addThreadListener

public boolean addThreadListener(WorkingThreadListener listener)
Fuegt einen Listener hinzu.

Returns:
true wenn dass Hinzufuegen erfolgreich war (siehe Vector.add(Object))

removeThreadListener

public boolean removeThreadListener(WorkingThreadListener listener)
Entfernt einen Listener von dem Thread.

Returns:
true wenn dass Entfernen erfolgreich war (siehe Vector.remove(Object))

fireThreadInitialised

protected void fireThreadInitialised()
Informiert alle WorkingThreadListener darueber, dass der Thread initialisiert wurde.


fireThreadStarted

protected void fireThreadStarted()
Informiert alle WorkingThreadListener darueber, dass der Thread gestartet wurde.


fireThreadPaused

protected void fireThreadPaused()
Informiert alle WorkingThreadListener darueber, dass der Thread pausiert.


fireThreadResumed

protected void fireThreadResumed()
Informiert alle WorkingThreadListener darueber, dass der Thread (nach einer Pause) wieder arbeitet.


fireThreadStopped

protected void fireThreadStopped()
Informiert alle WorkingThreadListener darueber, dass der Thread gestoppt wurde oder ausgelaufen ist.