A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shaoshuai 中级黑马   /  2015-2-5 11:14  /  1090 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题来源于ziyu0971 同学的帖子:http://bbs.itheima.com/thread-169016-1-1.html,首先从结构上来说是不推荐这种写法的,可读性差,不利于交流,这段代码其实是看你对匿名类中子类重写父类方法的掌握。
首先代码先format下:
  1. new Thread(new Runnable() { // 匿名
  2.                         public void run() {
  3.                                 System.out.println("runnable run");
  4.                         }
  5.                 }) {
  6.         public void run() {
  7.                 System.out.println("subthread run");
  8.         }
  9. }.start(); // 结果:subthread run
复制代码


这段代码其实就是启动了一个继承了Thread的匿名类线程,然后重写了run方法,在run方法里面打印了subthread run,那么肯定是调用是subthread的run方法,不是调用Thread里面的run方法,也就不会调用new Runnable子类的run方法了,就是这样。

1 个回复

倒序浏览
谢谢,结果是调用了subthread run方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马