2020-10-24

weixin_46079491發表於2020-10-24

Java 執行緒的兩種常用實現方式

第一種方式
類繼承 java.lang.Thread 類,覆蓋 run方法

//建立執行緒物件
MyThread t1 = new MyThread();
//開啟執行緒:
t1.start() ; // JVM預設執行 run方法

class MyThread extends Thread{
    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"好好學習"+i);
        }
    }
}

第二種方式
類實現 java.lang Runnable介面,同時實現run方法

// 建立執行緒的目標物件
 Mytarget mt = new MyTarget();
 //建立執行緒物件:
 Thread t2 = new Thread(mt); // 將目標物件作為引數進行傳遞
 //開啟執行緒
 t2.start(); // JVM預設呼叫run方法
 class MyThread2 implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"天天向上"+i);
        }
    }
}

–我們常用的執行緒為main執行緒

public class demo3 {
    public static void main(String[] args) {
        MyThread t =new MyThread();
        t.start();
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"天天向上"+i);
        }
    }
}
class MyThread extends Thread{
    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"好好學習"+i);
        }
    }
}

在這段程式碼中,我們在主執行緒main和執行緒Thread遍歷迴圈列印好好學習天天向上,發現列印結果不是交錯的,說明執行緒是競爭的
在這裡插入圖片描述