1. 程式人生 > >Java多執行緒 執行流程(圖解原始碼分析)

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-執行結果

這裡寫圖片描述