Thread läuft nicht parallel
-
Hallo,
ich habe eine Anwendung, die in einer Methode eine ziemlich rechenintensive Aufgabe ausführt. Diese Methode würde ich gerne parallel aublaufen lassen.
Die Methode gibt übrigens am Anfang ein "a" und am Ende ein "b" auf der Konsole aus.Ich habe also folgendes Ergebnis auf der Konsole erwartet:
1, a, 2, (irgendwann später) b
... da die Methode erst viel später fertig wird.
Tatsächlich ist es aber so, dass die Methode erst vollständig abgearbeitet wird, bevor es im normalen Code mit "2" weitergeht: 1, a, (nach langer Zeit) b, 2.Der Thread scheint also nicht parallel zu laufen. Was ist falsch?
System.out.println("1"); Thread thread = new Thread(){ public void run(){ showAllStartNodesInTreeView(_loadFileTask.getController(), _systemView); } }; thread.run(); System.out.println("2");
-
Wenn du kein Multiprozessorsystem hast kannst du keine prozesse irgendeiner
art parallel laufen lassen. Java Threads werden in der regel auch auf
native system threads, die ja auch nichts abderes als prozesse sind abgebildet.
Also verabschiede dich vom gedanken parallel-synchronisierter Threads und
überlege dir, wie du die sensiblen Stellen in deinem Code schützt.
-
mythread.start() statt mythread.run()
dann läufts 'parallel'
-
Danke, jetzt funktioniert es wunderbar