package javacodebook.thread.stopthread;

/**
 * Ein Thread mit einer sanften Methode, gestoppt zu werden.
 *
 * @author Mark Donnermeyer
 */
public class StartStopThread extends Thread {
    boolean stop = false;
    
    public void run() {
        // Der Thread läuft solange, bis er ein Stopsignal erhält.
        while(!stop) {
            System.out.println("Thread: läuft");
            try {
                sleep(2000);
            }
            catch (Exception ignore) {}
        }
        System.out.println("Thread: gestoppt");
    }
    
    /**
     * Dem Thread wird angezeigt, dass er stoppen soll
     */
    public void stopExecution() {
        stop = true;
    }
    
    public static void main(String []args) throws Exception {
        StartStopThread sst = new StartStopThread();
        
        System.out.println("Main: starte Thread");
        sst.start();
        sleep(4500);
        
        // Der Thread wird gebeten, zu stoppen.
        System.out.println("Main: stoppe Thread");
        sst.stopExecution();
        System.out.println("Main: fertig");
    }
}
