/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* join(), isAlive(): */ /* Das Programm startet einen Thread "Thread 1", der ca. zwei */ /* Sekunden laeuft. Ein zweiter Thread "Thread 2" prueft zu- */ /* naechst, ob der andere Thread laeuft, wartet auf seine Ter- */ /* minierung und prueft dann abschliessend nochmals, ob er */ /* noch laeuft. */ /***************************************************************/ class Thread1 extends Thread { /* Der Thread wird zwei Sekunden lang ausgefuehrt und terminiert dann */ public void run() { try { System.out.println("Thread 1: Ich laufe an"); sleep(2000); System.out.println("Thread 1: Ich terminiere"); } catch (java.lang.InterruptedException e) {} } } class Thread2 extends Thread { /* Der Thread prueft zunaechst, ob ein anderer Thread laeuft, wartet dann auf dessen Terminierung und prueft abschliessend nochmals, ob er laeuft. */ private Thread WartenAuf; /* Thread, auf den gewartet wird */ /* Konstruktor: Festlegung des Threads, auf den gewartet wird. */ Thread2(Thread w) { WartenAuf=w; } public void run() { try { /* Test, ob anderer Thread laeuft */ if (WartenAuf.isAlive()) System.out.println(" Thread 2: Thread 1 laeuft"); else System.out.println("Thread 2: Thread 1 laeuft nicht!!!"); /* Warten auf den anderen Thread */ System.out.println(" Thread 2: Ich warte auf Thread 1"); WartenAuf.join(); System.out.println(" Thread 2: Warten beendet"); /* Nochmaliger Test, ob anderer Thread laeuft */ if (WartenAuf.isAlive()) System.out.println(" Thread 2: Thread 1 laeuft immer noch!!!"); else System.out.println(" Thread 2: Thread 1 laeuft nicht mehr"); } catch (java.lang.InterruptedException e) {} } } public class Join { /* Hauptprogramm */ public static void main(String[] args) { System.out.println(); /* Erzeugung der Threads */ Thread1 t1 = new Thread1(); Thread2 t2 = new Thread2(t1); /* Starten der Threads */ t1.start(); t2.start(); } }