Java多執行緒 執行流程(圖解原始碼分析)
阿新 • • 發佈:2019-02-01
首先看一段程式碼(面試題),看一下執行結果
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");
}
}