package javacodebook.thread.simplerunnable; import java.util.Random; /** * Eine Klasse, die das Interface Runnable implementiert und damit dazu * genutzt werden kann, in einem eigenen Thread zu laufen. */ public class SimpleRunnable implements Runnable { private static Random random = new Random(System.currentTimeMillis()); public void run() { // Der aktuelle Thread wird ermittelt. Thread myThread = Thread.currentThread(); // Der Thread zeigt 10 mal an, dass er lebt und legt sich zwischendurch // für eine zufällige Zeit zwischen 0 und 1 Sekunde schlafen. for (int i=0; i<10; i++) { // Es geht auch ohne sleep. Mit sleep läßt sich das Geschehen aber // besser verfolgen. try { Thread.sleep(random.nextInt(1000)); } catch (InterruptedException e) {} // Ein Lebenszeichen des Thread. Damit auch sicher ist, dass die // Ausgaben dann erscheinen, wenn sie produziert werden, wird // die Methode flush() aufgerufen. System.out.println(myThread.getName() + ": " + i ); System.out.flush(); } System.out.println(myThread.getName() + ": fertig"); } public static void main(String []args) { // Es werden zwei Objekte der Klasse SimpleRunnable erzeugt. Da sie // keine Threads sind, sondern 'nur' die Klasse Runnable implementieren, // müssen sie jeweils von einem Thread 'huckepack' genommen werden. SimpleRunnable r1 = new SimpleRunnable(); SimpleRunnable r2 = new SimpleRunnable(); Thread s1 = new Thread(r1, "Anton"); Thread s2 = new Thread(r2, "Berta"); // Jetzt gehts los. Die Threads werden gestartet. s1.start(); s2.start(); System.out.println("Main: fertig"); } }