62,621
社区成员
发帖
与我相关
我的任务
分享public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
System.out.print("Cat");
}
};
Thread t = new Thread( r ) { //???这里传入的参数Runnable对象r,系统是怎么处理的?
public void run() {
System.out.print("Dog");
}
};
t.start(); //输出结果为:Dog
}
public void run() {
if (target != null) {
target.run();
}
}
这是Thread类中run方法,target是你传进来的Runnable,可以看到,如果线程启动,就会执行Runnable中的方法
而你的这种写法,相当于实现了Thread的一个子类,并覆写run方法,Runnable当然不会被执行了。如果想被执行,在run中,写一个super.runpublic static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
System.out.println("Cat");
}
};
Thread t = new Thread(r); //第一步
t = new Thread(){ //第二部
public void run() {
super.run();
System.out.println("Dog");
}
};
t.start(); //输出结果为:Dog
}
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
System.out.println("Cat");
}
};
Thread t = new Thread( r ) { //???这里传入的参数Runnable对象r,系统是怎么处理的?
public void run() {
super.run();
System.out.println("Dog");
}
};
t.start(); //输出结果为:Dog
}