Java Threads thread.start( ) und public void run( ) in selber Klasse?

2 Antworten

Du hast Standardmäßig einen Thread und wenn du einen weiteren erstellst, hast du 2. Wenn du 2 hast, laufen die nicht nacheinander, sondern nebeneinander und der schnellere kommt dadurch zu erst. Wenn du den 2. Startest, muss der erst erstellt werden. In der Zeit läuft der Hauptthread aber schon weiter

RedDevil1982 
Fragesteller
 23.08.2022, 14:13

Ein wenig verwirrend, aber ok. Danke!

D. h. der schnellere Thread ist hier die main-Methode.
In meinem Bsp. starte ich mit thread.start( );

den zweiten Thread. Da aber der Thread der main-Methode schneller ist, als der zweite Thread wird mir auf der Konsole zuerst:

This code is outside of the thread vor

This code is running in a thread angezeigt.

Wenn ich thread.start( );

ausführe, dann wird der Teil, der unter public void run ( ) {

...

ausgeführt. Richtig?

0
FaTech  23.08.2022, 14:15
@RedDevil1982

Ja. Der Main Thread ist nur schneller, weil der ja bereits die ganze Zeit durchläuft und nicht nochmal gestartet werden muss. Er ist ja schon gestartet. So gesehen ist er auch nicht schneller, nur da er schon läuft, hat er den neuen Thread überholt

1

Mit

thread.start();

erhält ein Thread die Erlaubnis, loszulegen. Anders ausgedrückt: Er wird rechenwillig gesetzt. Wann er tatsächlich startet, wird durch die Threadverwaltung der Java Virtual Machine entschieden. Über die zeitliche Aufeinanderfolge der Aktionen in verschiedenen Threads sind grundsätzlich keine Annahmen möglich.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler