黑马程序员技术交流社区

标题: 关于多线程 程序中输出的是什么 原因是什么这个是重点 [打印本页]

作者: 齐伟超    时间: 2015-8-31 17:31
标题: 关于多线程 程序中输出的是什么 原因是什么这个是重点
  1. package com.itcast.day1;

  2. public class Test1 {
  3.         public static void main(String[] args) {
  4.                 new Thread(new Runnable(){
  5.                         public void run(){
  6.                                 System.out.println("runnable run");
  7.                         }
  8.                 })
  9.                 {
  10.                         public void run(){
  11.                                 System.out.println("subthread run");
  12.                         }
  13.                 }.start();
  14.                
  15.         }
  16. }
复制代码

作者: freehello    时间: 2015-8-31 20:42
本帖最后由 freehello 于 2015-8-31 20:45 编辑

第一个Runnable是Thread构造函数的一个参数,第二个 覆写了Thread的run方法,
因此实际执行的是第二个 。
这个是jdk源码Thread.java中的代码
  @Override
    public void run() {
        if (target != null) {       //这里的target就是传递的参数,既第一个Runnable
            target.run();
        }
    }
这个被第二个覆写了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2