我看到有趣的行为。我这段代码运行Java线程:在启动后调用Thread对象的run()方法
public class ThreadsTest {
public static void main(String[] args) {
Runnable mr = new MyRunnable();
Thread t1 = new Thread(mr);
Thread t2 = new Thread(mr);
t1.setName("first");
t2.setName("second");
t1.start();
t2.start();
t1.run();
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i=0; i < 2; i++) {
System.out.println("Running: " + Thread.currentThread().getName());
}
}
}
我得到的输出是:
Running: first
Running: first
Running: second
Running: second
我期待看到类似这样的东西:
Running: first
Running: first
Running: second
Running: second
Running: main
Running: main
有谁知道为什么我不在我的输出中的某处可以看到Running: main
。谢谢。
我不知道你为什么期望。你能解释一下吗? – AHungerArtist 2013-02-10 04:22:07
对Thread对象调用run()方法't1.run()'应调用MyRunnable类中的run方法。它应该输出当前正在运行的线程是主线程。对Thread对象调用run()方法的行为与调用任何其他对象上的任何方法的行为相同。我希望我的回答对你有意义。 – robonerd 2013-02-10 04:28:49