我有一个名为Test Example的类,它有一个名为dance()的方法。在主线程中,如果我在子线程中调用dance()方法,会发生什么?我的意思是,该方法将在子线程或主线程中执行吗?
public class TestExample {
public static void main(String[] args) {
final TestExample test = new TestExample();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hi Child Thread");
test.dance();
}
}).start();
}
public void dance() {
System.out.println("Hi Main thraed");
}
}
答案 0 :(得分:4)
试试这个......
1。方法舞蹈属于Class TestExample,而不属于主线程。
2. 每当启动java应用程序时,JVM都会创建一个主线程,并放置 堆栈底部的main()方法,使其成为入口点,但如果您正在创建另一个线程并调用方法,那么它将在新创建的线程内运行。
第3。它是将执行dance()方法的Child线程。
请参阅下面的示例,其中我使用了Thread.currentThread().getName()
public class TestExample {
public static void main(String[] args) {
final TestExample test = new TestExample();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
test.dance();
}
});
t.setName("Child Thread");
t.start();
}
public void dance() {
System.out.println(Thread.currentThread().getName());
}
}
答案 1 :(得分:0)
它将在Child Thread中执行。编写方法时,它属于Class而不是特定的Thread。