搜尋
首頁JavaJava入門java執行緒中start方法與run方法的差別是什麼

java執行緒中start方法與run方法的差別是什麼

May 01, 2021 pm 12:04 PM
javarunstart執行緒

java執行緒中start方法與run方法的差別是什麼

區別對比如下:

我們知道Java中的執行緒是透過Java.lang.Thread來實現的,那麼我們就可以透過實例化Thread一個物件來建立一個線程,然後再呼叫start()啟動,但是Thread的一個特定的方法run()也可以啟動線程,那麼這兩個方法有什麼差別呢?

執行緒狀態

在Java当中,线程通常有五种状态:创建、运行、阻塞、等待、终止
NEW------------------->新建状态,没有调用start()之前的状态
RUNNABLE---------->运行状态,(running执行中,ready就绪(等待cpu时间片))
BLOCKED------------>阻塞状态,
WAITING-------------->等待状态,没有明确的等待结束时间,调用wait()
TIMED_WAITING—>超时等待状态,有明确的等待时间,如:sleep(xxx)
TERMINATED-------->终止状态

多執行緒原理:

我們一般使用thread new一個執行緒,然後呼叫start方法啟動,執行緒就會處於運行狀態中ready,等待CPU調度,然後再執行線程裡面的run()方法,使用start方法才真正實現了多線程運行,因為這個時候不用等待我們的run方法執行完成就可以繼續執行下面的程式碼,這才叫多執行緒。

如果直接使用thread執行run方法會怎麼樣呢?

因為run方法是thread裡面的一個普通的方法,如果直接呼叫run()方法,這個時候它會運行在主線程中的,因為程式中只有主線程一個線程,如果有兩個線程,都是直接呼叫run()方法,那麼他們的執行順序一定是按順序執行的,並沒有實現多線程的目的。

免費學習影片分享:java影片教學

程式碼比較

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.start();
    }
}

呼叫start()方法,執行緒名稱是預設的

java執行緒中start方法與run方法的差別是什麼

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.run();
    }
}

呼叫run(),執行緒名稱是main

java執行緒中start方法與run方法的差別是什麼

#相關推薦:java入門教學

以上是java執行緒中start方法與run方法的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具