黑马程序员技术交流社区
标题:
多线程里关于匿名内部类的一个问题
[打印本页]
作者:
momoxixi
时间:
2015-12-23 19:53
标题:
多线程里关于匿名内部类的一个问题
为什么运行结果是2不是1?
public class Test {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("1");
}
}) {
@Override
public void run() {
System.out.println("2");
}
}.start();
}
}
复制代码
作者:
Hi.。
时间:
2015-12-23 20:01
视频中老师讲过,如果同时复写了接口中的run和Thread类中的run,会执行Thread类中的
作者:
momoxixi
时间:
2015-12-23 20:03
以上其实等效于:
new Thread() {
@Override
public void run() {
System.out.println("2");
}
}.start();
复制代码
请问这里Thread对象是属于匿名类吗?或者说以下这两种有什么区别?
new Thread() {
@Override
public void run() {
System.out.println("2");
}
}.start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("1");
}
}).start();
复制代码
作者:
Hi.。
时间:
2015-12-23 20:18
这个就是创建线程的两种方式,一个通过Thread类的子类重写run(); 另一个是通过Runnable接口的实现类重写run()方法
两种方式都属于匿名内部了表现形式。它的本质就是继承该类或者实现接口的子类匿名对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2