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

Java 同时被 2 个专栏收录
40 篇文章 1 订阅
8 篇文章 0 订阅

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

    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-运行结果

这里写图片描述

  • 0
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值