我最近一直在试验线程。我的实验提出了一个问题,我希望你回答,以确认我的理解。
如果我有这组课程:
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
}
}
然后如果我将启动HelloThread
线程,doSomething()
和doSomethingMore()
在新分离的线程中运行,但andSomethingMore()
将在主线程中运行,因为{ {1}}不是HelloThreadExtension
或implement Runnable
?
OR
实际上它是否在调用extends Thread
HelloThread
后启动的单独线程中运行?
此致 鲍勃
答案 0 :(得分:1)
run方法中调用的所有代码都将在一个新线程中运行,在完成执行后,它将控制返回到主线程以继续执行代码。
您可以通过调试代码并在Thread.start调用之前添加一个断点以及在Runnable实例的run方法中添加其他断点来查看它。我认为进行这个调试练习将帮助您了解线程在JVM中的工作方式。
希望这有帮助