线程面试题

package com.bjsxt.test01;

/**
 * @program: JavaSE
 * @description
 * 面试题    Thread 多线程种run底层原理
 * @author: wuhao
 * @create: 2019-10-29 18:29
 **/
public class Test01 {
    public static void main(String[] args) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("222222");
            }
        }){
            @Override
            public void run() {
                System.out.println("111111");
            }
        }.start();
    }
}

这个结果为111111  因为传入Runnable 进来  Thread 种的run方法重写了  所以执行的是 Thread 的run方法

/**
 * @program: JavaSE
 * @description
 * 面试题    Thread 多线程种run底层原理
 * @author: wuhao
 * @create: 2019-10-29 18:29
 **/
public class Test01 {
    public static void main(String[] args) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("222222");
            }
        }){
            @Override
            public void run() {
                super.run();
                System.out.println("111111");
            }
        }.start();
    }
}

这个输出的是22222    111111   因为super.run 方法底层就是传一个 Runnable 的实例   看下面的代码 target 就是传进来的

 @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }
原文地址:https://www.cnblogs.com/ww103/p/11760761.html