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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sevenette 中级黑马   /  2014-5-22 22:24  /  998 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. class ThreadTest
  2. {
  3.         public static void main(String[] args)
  4.         {

  5.                 new Thread(new Runnable()
  6.                 {
  7.                         public void run()
  8.                         {
  9.                                 System.out.println("runnable run");
  10.                         }
  11.                 })
  12.                 {
  13.                         public void run()
  14.                         {
  15.                                 System.out.println("subThread run");
  16.                         }
  17.                 }.start();

复制代码


看着略晕。。。
运行结果是subThread run
{:3_67:} 求大神讲解一下原因。。。

5 个回复

倒序浏览
没什么疑问啊,就应该是这个结果啊
回复 使用道具 举报
java木 发表于 2014-5-22 22:29
没什么疑问啊,就应该是这个结果啊

结果能大概猜出来,但具体的过程不太明白
回复 使用道具 举报
应该是这样吧
  1.     public static void main(String[] args)
  2.     {
  3.             new Thread(new Runnable()
  4.         {
  5.                             //Runnable对象的run()方法
  6.                 public void run()
  7.                 {
  8.                         System.out.println("runnable run");
  9.                 }
  10.         })
  11.         {
  12.                             //Thread的run()方法
  13.                 public void run()
  14.                 {
  15.                         System.out.println("subThread run");
  16.                 }
  17.         }.start();
复制代码
回复 使用道具 举报
new Thread(new Runnable(){})  这个是什么意思?
回复 使用道具 举报
我是菜鸟解释一下,望楼主能看明白,勿喷!!!
你new了一个Thread,往里传了一个匿名内部类对象,这个匿名内部类对象就是Runable类的子类,复写了run方法,这个时候你就new的是对象  .start();运行的就是runnable run了。  但是你后边又跟了一个{}就说明这还是一个匿名内部类。你又覆盖了一遍run 方法,所以最后运行的是subThread run;




回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马