结构1:
public class Runner {
public static void main(String[] args) {
Thread t1 = new Thread(new Thread(){
public void run() {
System.out.println("value :");
}
});
t1.start();
}
}
结构2:
public class Runner {
public static void main(String[] args) {
Thread t1 = new Thread(){
public void run(){
System.out.println("value :");
}
};
t1.start();
}
}
两种情况的结果都是一样的。
上述两个结构有什么区别?请解释一下。
答案 0 :(得分:0)
您正在使用第一个示例中的内部类执行线程。所以基本上你在第一个例子中将一个线程的对象传递给另一个线程。
start()方法总是查找run方法。并且t1.start()在示例中都运行了线程。
答案 1 :(得分:0)
在第一个示例中,您在构造函数中为Thread提供了一个Thread。它很奇怪,它的工作原理是因为Thread实现了Runnable,但不鼓励使用它。只需在构造函数
中使用Runnable默认情况下,Thread的run()
方法只运行给予构造函数的Runnable。如果你没有提供Runnable,并且都没有覆盖Thread的run方法,那么它基本上不会执行任何代码。
我的Thread类的反编译运行方法如下所示:
public void run() {
if(this.target != null) {
this.target.run();
}
}