/****************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Ein Thread uebertraegt einen Wert an einen anderen Thread, */ /* indem er ihn in eine gemeinsam genutzte Variable schreibt. */ /****************************************************************/ class Thread1 extends Thread { /* Thread1 wartet eine Sekunde und weist dann einer gemeinsam benutzten Variable i, die zuvor den Wert 1 hatte (siehe Hauptprogramm), den Wert 2 zu. */ public void run() { try { sleep(1000); System.out.println(); System.out.println("t1: Setze i auf 2"); ThreadDaten.i = 2; } catch (InterruptedException E) { } } } class Thread2 extends Thread { /* Thread2 gibt zunaechst den Wert der gemeinsam benutzten Variablen i aus (1, da sie mit 1 initia- lisiert wurde - siehe Hauptprogramm), wartet 2 Sekunden und gibt dann den i-Wert nochmals aus (jetzt 2, da Thread1 den i-Wert in der Zwischen- zeit geaendert hat). */ public void run() { try { System.out.println(); System.out.println("t2: i = "+ThreadDaten.i); sleep(2000); System.out.println(); System.out.println("t2: i = "+ThreadDaten.i); } catch (InterruptedException E) { } } } /* Klasse mit dem Hauptprogramm */ public class ThreadDaten { static int i = 1; /* Die Variable i ist im gesamten Programm nutzbar. Sie wird hier mit dem Wert 1 initialisiert. */ public static void main(String[] args) { /* Erzeugung und Start zweier Threads. */ Thread1 t1 = new Thread1(); Thread2 t2 = new Thread2(); t1.start(); t2.start(); } }