Konsole Ausgabe synchronisieren

sampi

Grünschnabel
Hi,

wie kann ich die Konsole Ausgabe synchronisieren?

Ich habe zwei Java Klassen (extends Thread)
In der dritte Klasse ( mit main Methode) rufe ich beide Threads auf.
Der erste erwatet von mir einige Eingabe bevor er weiter machen kann ("Geben sie ein Zahl ein: ...");
Wie kann ich der zweite dazu bringen , seine Konsole Ausgabe zu machen erst nachdem ich mit dem ersten fertig bin und nicht dazwischen (Nachdem ich die Angabe gemacht habe)?
=> jedesmal wenn eine Engabe gemacht werden soll, soll der zweite Thread immer warten


Gruss
 
Einfache Variante?

Thread in einer Schleife laufen lassen,
Wert abfragen. Wert nicht gesetzt? Thread.sleep(milliseconds)
Erneuter Schleifendurchlauf.
 
Hi Christian,

ich muss ja die gleiche Variable in beide schleife abfragen,
und da die 2 Threads in 2 verschieden Klasse sind, wie und wo soll ich diese Variable deklarieren?
Gruss
 
Hallo!

Versuchs doch einfach mal mit
Code:
 threadAufDenGewartetWerdenSoll.join();

Beispiel:

Code:
/*
 * Created on 02.06.2004
 */

/**
 * @author Administrator
 */
public class ThreadTest {

	public static void main(String[] args) {

		final Thread thread1 = new Thread() {
			public void start() {
				super.start();
				System.out.println("Thread1 gestartet");
			}
			public void run() {

				try {
					for (int i = 0; i < 10; i++) {
						Thread.sleep(250l);
						System.out.println("Thread1: " + i);
					}
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		};

		final Thread thread2 = new Thread() {
			public void start() {
		 	/* Zum Spaß mal dieses Stück hier auskommentieren... */ 
				try {
					//Dieser aufruf Blockiert so lange bis die Run-Methode des Threads
					//an dem wir join() aufgerufen haben beendet ist.
					thread1.join();
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			/* Zum Spaß mal dieses Stück hier auskommentieren... 	*/
				
				super.start();
				System.out.println("Thread2 gestartet");
			}

			public void run() {
				try {
					for (int i = 0; i < 10; i++) {
						Thread.sleep(250l);
						System.out.println("Thread2: " + i);
					}
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		};

		thread1.start();
		thread2.start();

	}
}

Gruß Tom
 
Zurück