我创建了一个使用线程的测试程序:
class First implements Runnable {
public void run() {
System.out.print("One ");
}
}
class Second implements Runnable {
Thread other;
Second(Thread t) {other = t;}
public void run() {
System.out.print("Two");
}
}
public class ThreadTest {
void go() {
First first = new First();
Thread t = new Thread(first);
Second second = new Second(t);
Thread u = new Thread(second);
t.start();
u.start();
}
public static void main(String[] args) {
new ThreadTest().go();
}
}
我预计它将打印:
一一
但它突然为我打印了:
一二
我不明白为什么会这样。我认为在两个线程中,run()
必须调用 First 类的方法。因为我将 First 实例传递给 Thread 构造函数,然后将此创建的线程传递给 Second 构造函数。所以run()
第一类的方法优先run()
于第二类的方法。我哪里错了?