Java多线程 执行流程(图解源码分析)

首先看一段代码(面试题),看一下执行结果

    public static void main(String[] args) {
        new Thread(new Runnable() {

            //重写Runnable下的run方法
            public void run() {
                System.out.println("number1");
            }
        }) {
            //重写Thread的run方法
            public void run() {
                System.out.println("number2");
            };
        }.start();
    }

执行结果:
这里写图片描述
看一下下面的两种方式,就会知其所以然了

第一种方式:继承

下面我们来分析下面这一段代码的执行流程

public class ThreadDemo01 {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        mt.start();
    }

}
//自定义一个类继承于Thread
class MyThread extends Thread {
    @Override
    //重写Thread的run方法
    public void run() {
        System.out.println("number2");
    }
}

1-创建对象执行过程

这里写图片描述

2-start方法执行过程

这里写图片描述

3-执行结果

这里写图片描述

第二种方式:实现Runnable接口

下面我们来分析下面这一段代码的执行流程

public class ThreadDemo01 {
    public static void main(String[] args) {
        //创建实现类对象,并向上转型
        Runnable target = new MyThread();
        //将实现类对象作为参数传入
        Thread mt = new Thread(target);
        mt.start();
    }
}
//自定义一个类实现了Runnable接口
class MyThread implements Runnable {    
    @Override
    //重写Runnable的run方法
    public void run() {
        System.out.println("number1");
    }
}

1-创建对象执行过程

这里写图片描述

2-start方法执行过程

这里写图片描述

3-运行结果

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u010452388/article/details/80473085