import java.awt.*; public class Main { public static void main(String[] args) { Logger l = Logger.getInstance(); System.out.println("main() gestartet."); l.log("main() gestartet."); for(int i=0; i<100; i++) new Process(); System.out.println("main() endet."); l.log("main() endet."); } } // Unser Prozess, der x mal parallel gestartet wird. class Process extends Thread { public void run() { // Prozess läuft los. // (Einzige) Logger-Instanz holen Logger l = Logger.getInstance(); // Damit man auch was sieht: Jeder Prozess bekommt ein Fenster Frame frame = new Frame(this.toString()); // Ein Fenster frame.setSize(200,100); // Größe ändern (breite, höhe) frame.setLocation((int)(Math.random()*800),(int)(Math.random()*600)); frame.setVisible(true); // In Log-Datei schreiben (synchronized: Immer nur einer) l.log("Neuer Prozess " + this.toString() + " gestartet."); // "ungefähr" 10 Sekunden warten try { sleep((int) (10000.0 * Math.random())); } catch(InterruptedException ie) {} // Nichts tun, falls Unterbrechung frame.dispose(); // Fenster (für immer) schließen l.log("Prozess " + this.toString() + " beendet."); } public Process() { // start() aus Basisklasse Thread aufrufen, startet auch run() start(); } }