2. Beispiel zur Erzeugung eines Threads


...
public class CPanel extends Panel implements Runnable
{
	...
	public void run()
	{
	...
	}

	public CPanel(String text)
	{					 
		...
		// Thread Klasse starten
		// (die Klasse, von der die Threads abgeleitet sind)
		Akt_Main MyThread;
		MyThread = new Akt_Main(Eingabefeld1, Eingabefeld2,
					Ausgabefeld1, Ausgabefeld2,
					Ausgabefeld3, Ausgabefeld4);
		}
}
// Thread-Klasse
public class Akt_Main extends Thread
{
	public int a,b;
	public boolean ok = false; 
	Akt1 Thread1;
	Akt2 Thread2;
	Akt3 Thread3;
	Akt4 Thread4;

	// 4 Threads im Konstruktor starten
	public Akt_Main (TextField Eingabefeld1, TextField Eingabefeld2, 
		         TextField Ausgabefeld1, TextField Ausgabefeld2,
			 TextField Ausgabefeld3, TextField Ausgabefeld4)
	{
		Thread1 = new Akt1(Eingabefeld1,Eingabefeld2,Ausgabefeld1);
		Thread1.start();
		Thread2 = new Akt2(Eingabefeld1,Eingabefeld2,Ausgabefeld2);
		Thread2.start();
		Thread3 = new Akt3(Eingabefeld1,Eingabefeld2,Ausgabefeld3);
		Thread3.start();
		Thread4 = new Akt4(Eingabefeld1,Eingabefeld2,Ausgabefeld4);
		Thread4.start();
	}
	

	// Berechnungscode, Farbwechsel, Exceptions abfangen usw.
	// (enthaelt allen doppelten Code)
	public void berechnen(TextField Eingabefeld1, 
			      TextField Eingabefeld2, 
           		      TextField Anzeige)
	{
	...
	}				 
}
// Thread 1 : a+b
public class Akt1 extends Akt_Main
{
	TextField Eingabefeld1_t1, Eingabefeld2_t1, Ausgabefeld1_t1;

	public Akt1(TextField Eingabefeld1, 
		    TextField Eingabefeld2, 
		    TextField Ausgabefeld)
	{
		Eingabefeld1_t1 = Eingabefeld1;
		Eingabefeld2_t1 = Eingabefeld2;
		Ausgabefeld1_t1 = Ausgabefeld;
	}

	public void run()
	{
		while (true)
		{
			try
			{
				sleep(1000);
			}
			catch(InterruptedException e)
			{
			} 		  				
			berechnen(Eingabefeld1_t1,Eingabefeld2_t1,Ausgabefeld1_t1);
			if (ok)
				Ausgabefeld1_t1.setText(Integer.toString(a + b));
			else
				Ausgabefeld1_t1.setText("Fehler");
		}	 
	}
} 

... und noch drei weitere Threads

Programmbeispiel