Ich habe vor kurzem mit Themen experimentiert. Meine Experimente haben eine Frage aufgeworfen, die ich gerne beantworten würde, um mein Verständnis zu bestätigen.Concurrency - geht zurück auf Hauptthread
Wenn ich diesen Satz von Klassen:
public class HelloThread implements Runnable {
public void run(){
doSomething();
doSomethingMore();
andSomethingMore();
}
public void doSomething(){
// print something
}
public void doSomethingMore(){
// print more
}
public void andSomethingMore(){
HelloThreadExtension helloThreadExtension = new helloThreadExtension();
helloThreadExtension.doSomethingWithExtension();
}
}
public class HelloThreadExtension {
public void doSomethingWithExtension(){
// do something more advanced than printing
}
}
Und dann, wenn ich die HelloThread
Faden, doSomething()
und doSomethingMore()
läuft in neu getrennten Thread starten, aber andSomethingMore()
wird im Hauptthread, zurück laufen seit HelloThreadExtension
nicht implement Runnable
oder extends Thread
?
ODER
Ist es eigentlich, dass es in dem separaten Thread ausgeführt wird, die einmal gestartet wurde HelloThread
.start()
genannt wurde?
Grüße, Bob
Ihre ganze run-Methode in neu erstellten Thread ausgeführt wird, und Faden, der es weiter mit seiner eigenen Logik gehen aufrufen. Sie können Join verwenden, um den Thread anzuhalten, bis ein anderer Thread die Ausführung stoppt, aber jede Methode innerhalb des Threads wird nicht im Thread ausgeführt, der sie aufgerufen hat. Ich hoffe, das hilft –
'andSomethingMore' wird im selben Thread laufen. Fügen Sie 'System.err.printLn (Thread.currentThread(). GetName());' hinzu, um den Namen des aktuellen Threads als Beweis zu drucken. –
Und für die Aufzeichnung: Sie ** unbedingt ** möchten @Override auf jede Methode, die Sie schreiben, dass Sie denken, sollte etwas außer Kraft setzen. – GhostCat