package javacodebook.thread.multiusethread;

/**
 * Mithilfe dieser Klasse ist es möglich, das Mehrfache starten und stoppen
 * eines Threads zu simulieren. Intern wird bei jedem Aufruf der Methode
 * start() ein neuer Thread erzeugt und gestartet.
 *
 * @author Mark Donnermeyer
 */
public class MultiuseThreadContainer {
    WorkerThread worker;
    boolean isStarted = false;
    
    /**
     * Erzeugt einen neuen Thread und startet diesen. Wenn bereits ein Thread
     * läuft, dann wird natürlich kein neuer Thread erzeugt und gestartet.
     */
    public void start() {
        if (isStarted)
            return;
        
        worker = new WorkerThread();
        worker.start();
        isStarted = true;
    }
    
    /**
     * Stoppt den laufenden Thread. Wenn kein Thread läuft, dann kann natürlich
     * auch kein Thread gestoppt werden.
     */
    public void stop() {
        if (!isStarted)
            return;
        
        worker.stopExecution();
        isStarted = false;
    }
}

