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