Objekt verstehen

Hab es mal kurz erweitert:
Code:
@Override
	public void run() {

		for (char c = 'a'; c <= 'z'; c++) {

			System.out.println(c);

		}
		for (char b = 'A'; b <= 'Z'; b++) {

			System.out.println(b);

		}

	}

Problem: Ich weiss nicht wirklich was ich mit join() anfangen kann.
Waits for this thread to die. // Auf den Thread warten bis dieser beendent ist
An invocation of this method behaves in exactly the same way as the invocation//Der Aufruf einer Methode verhält sich in gleicher Weise wie der Aufruf?
 
join: Ruf es einfach auf, fertig :rolleyes:

Großbuchstaben: Du hast deine eigene Angabe nicht gelesen.
Auch von der join-Beschreibung hast du einen Teil vergessen.
Mit dem würde es mehr Sinn machen.
 
Du hast den Satz unvollständig gelesen. 'join(0)' eine Zeile darunter gehört dazu:
An invocation of this method behaves in exactly the same way as the invocation
join(0)

Und nun schaust du nach was join(Integer/Long) macht.
 
Also join(0) heißt für immer warten. und long ist milliseconds und int nanoseconds.Ich wiess nicht ich hab dieses join immer noch nicht verstanden was das macht. Es aufrufen? Was auf rufen und was hat das für ein Sinn? Mit Start wird doch meine Methode aufgerufen.

Code:
public static void main(String[] args) throws InterruptedException {
		Thread klein = new ABCThread();
		
		klein.join(0);
		klein.start();
		
	}
 
Würdest du mal die Java-Dokumentation, die ich verlinkt habe, lesen?

join() wartet überhaupt nicht für immer. Lies bitte die Doku, dann weißt du auch, dass man join() nach start() aufrufen sollte.
 
Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever. //

Wartet höchstens millis Millisekunden für diesen Thread, um zu sterben. Ein Timeout von 0 bedeutet, ewig warten.

This implementation uses a loop of this.wait calls conditioned on this.isAlive. As a thread terminates the this.notifyAll method is invoked. It is recommended that applications not use wait, notify, or notifyAll on Thread instances.//

Diese Implementierung verwendet eine Schleife this.wait fordert this.isAlive konditioniert. Wie ein Thread beendet die this.notifyAll Methode aufgerufen wird. Es wird empfohlen, dass Anwendungen nicht warten, melden, oder auf notifyAll Thema Instanzen.



googleÜbersetzer

Mein Englisch ist echt schwach aber ich versuch es zuverstehen. Und ich weiss nicht wo ich sonst noch mehr Informationen her bekommen. Das sind immer nur so 2 Sätze die mir echt nicht weiter bringen.


Ich vermute das ich jetzt ein Konstruktor baue. Wo ich mit this.wait arbeite... Und so irrgendwie groß und klein Buchstaben zu unterscheide.
 
Zuletzt bearbeitet:
Google Übersetzer hat ein ganz passables Resultat für den ersten Absatz ausgegeben, jedoch beim zweiten nur Schwachsinn. Nutze keinen Computer-Übersetzer, die funktionieren erst recht nicht für solche fachspezifischen Texte!

Aber du brauchst gar nicht den zweiten Absatz zu verstehen, der ist in diesem Fall völlig irrelevant.

Wieso willst du im Konstruktor wait() benutzen? Es ist doch ganz einfach: du baust einen Konstruktur, der je nach übergebenem Argument*, entweder später intern in run() Großbuchstaben oder Kleinbuchstaben verwenden wird.

*) Eine Bool-Variable wäre für dich die einfachste Möglichkeit. (Viel besser wären allerdings Enums wg. aussagekräftigere Namenswahl; aber das nur am Rande erwähnt, falls du es irgendwann mal hörst.)
 
Code:
public class ABCThread extends Thread {

	private boolean gOk;

	public ABCThread(String klgr) {

		if (klgr == "klein") {
			this.gOk = true;
		} else {
			this.gOk = false;
		}

	}

	@Override
	public void run() {

		if (gOk == true) {
			for (char c = 'a'; c <= 'z'; c++) {

				System.out.println(c);

			}
		} else {
			for (char b = 'A'; b <= 'Z'; b++) {

				System.out.println(b);

			}
		}
	}

}



public static void main(String[] args) throws InterruptedException {
		Thread klein = new ABCThread("klein");
		Thread groß = new ABCThread("groß");

		klein.start();
		groß.start();
	
		
	}
Wenn ich die jetzt einzeln starte geht alles, klein und groß. Aber wenn ich sie so wie oben starte also 2 Threads dann startet klein und mittendrin groß.
 
Cool ich hab es verstanden******
Das join...
Code:
public static void main(String[] args) throws InterruptedException {
        Thread klein = new ABCThread("klein");
        Thread groß = new ABCThread("groß");
 
        klein.start();
        klein.join(0):
        groß.start();
    
        
    }
 
Korrekterweise müsstest du noch ein join() hinzufügen, damit du das Problem umgehst, dass das Programm aus der main()-Methode "springt", bevor der Thread fertig ist:

Java:
klein.start();
// Brauchst eigtl. keine 0, denn .join() ist das Gleiche wie .join(0) laut Dokumentation
klein.join(0);

groß.start();
groß.join(0);
 
Zurück