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