Parallelisierung von Prozessen mit Java
  | 
Verzweigung - thread001
  | 
Bild 0-1: Verzweigung als Prozessfluss-Graph
public class MeinThread extends Thread
{
    MeinThread(String name)
    {
        setName(name);
    }
    public void run()
    {
        while(true)
        {
            System.out.print(" "+getName());
            try
            {
                Thread.sleep(50);
            }
            catch(Exception e)
            {
            }
        }
    }
}
Code 0-1: MeinThread.java - Von Klasse Thread erbende Java-Klasse "MeinThread"
public class Hauptprogramm
{
    public static void pausieren()
    {
        try
        {
            Thread.sleep(5000);
        }
        catch(Exception e)
        {
        }
    }
    public static void main(String[] args)
    {
        MeinThread mA = new MeinThread("A");
        MeinThread mB = new MeinThread("B");
        System.out.println("\nThread A starten: mA.start();\n");
        mA.start();
        pausieren();
        System.out.println("\nThread B starten: mB.start();\n");
        mB.start();
        pausieren();
        System.out.println("\nThread A anhalten: mA.suspend();\n");
        mA.suspend();
        pausieren();
        System.out.println("\nThread A weiterfuehren: mA.resume();\n");
        mA.resume();
        pausieren();
        System.out.println("\nThread A und B anhalten: mA.stop();mB.stop();\n");
        mA.stop();
        mB.stop();
    }
}
Code 0-2: Hauptprogramm - Java-Programm, das zwei Thread-Objekte vom Typ "MeinThread" erzeugt und deren Methode "run" startet.
Thread A starten: mA.start(); A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A Thread B starten: mB.start(); B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A Thread A anhalten: mA.suspend(); B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Thread A weiterfuehren: mA.resume(); A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B Thread A und B anhalten: mA.stop();mB.stop();
Code 0-3: Konsolenausgabe des obigen Programms
Verzweigen und wieder zusammenführen - thread002
  | 
Bild 0-2: Verzweigung als Prozessfluss-Graph
public class MeinThread extends Thread
{
    private int maxschritte;
    MeinThread(String name, int maxschritte)
    {
        this.maxschritte = maxschritte;
        setName(name);
    }
    public void run()
    {
        for(int i=0;i<maxschritte;i++)
        {
            System.out.print(" "+getName()+i);
            try
            {
                Thread.sleep(100);
            }
            catch(Exception e)
            {
            }
        }
    }
}
Code 0-4: MeinThread.java - Neue von Klasse Thread erbende Java-Klasse "MeinThread"
public class Hauptprogramm
{
    public static void pausieren()
    {
        try
        {
            Thread.sleep(500);
        }
        catch(Exception e)
        {
        }
    }
    public static void main(String[] args)
    {
        MeinThread mA = new MeinThread("A",10);
        MeinThread mB = new MeinThread("B",20);
        System.out.println("\nThread A und B starten: mA.start();mB.start();\n");
        mA.start();
        mB.start();
        while( mA.isAlive() || mB.isAlive() )
        {
             if(mA.isAlive() && mB.isAlive())
                 System.out.print("\n A_B_busy. \n");
             else if(mA.isAlive())
                 System.out.print("\n A_busy. \n");
             else if(mB.isAlive())
                 System.out.print("\n B_busy. \n");
             pausieren();
        }
        mA.stop();
        mB.stop();
    }
}
Code 0-5: Hauptprogramm.java - Neues Hauptprogramm, das nach Erzeugen und Start zweier Prozesse auf deren Ende wartet.
Thread A und B starten: mA.start();mB.start(); A_B_busy. A0 B0 A1 B1 A2 B2 A3 B3 A4 B4 A_B_busy. A5 B5 A6 B6 A7 B7 A8 B8 A9 B9 A_B_busy. B10 B11 B12 B13 B14 B_busy. B15 B16 B17 B18 B19 B_busy.
Code 0-6: Konsolenausgabe des obigen Programms