溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在java線程中使用start

發(fā)布時間:2021-04-25 15:21:42 來源:億速云 閱讀:353 作者:Leah 欄目:編程語言

本篇文章為大家展示了怎么在java線程中使用start,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Java有哪些集合類

Java中的集合主要分為四類:1、List列表:有序的,可重復的;2、Queue隊列:有序,可重復的;3、Set集合:不可重復;4、Map映射:無序,鍵唯一,值不唯一。

1.start()概念

開始一個線程后,線程就進入就緒狀態(tài),使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調度并執(zhí)行。但是這并不意味著線程就會立即運行。只有當cpu分配時間片時,這個線程獲得時間片時,才開始執(zhí)行run()方法。

2.start()與run()區(qū)別

start()是方法,它調用run()方法,而run()方法是你必須重寫的。run()方法中包含的是線程的主體(真正的邏輯)。

3.start()啟動線程實例

new Thread(() -> {
    // todo
}).start();
 
// JDK 源碼
public synchronized void start() {
 
    if (threadStatus != 0)
        throw new IllegalThreadStateException();
 
    group.add(this);
    boolean started = false;
    try {
        start0();
        started = true;
    } finally {
        try {
            if (!started) {
                group.threadStartFailed(this);
            }
        } catch (Throwable ignore) {}
    }
}

線程啟動方法 start(),由 JVM 調用此線程的 run 方法,使線程開始執(zhí)行。其實這就是一個 JVM 的回調過程。

另外 start() 是一個 synchronized 方法,但為了避免多次調用,在方法中會由線程狀態(tài)判斷。threadStatus != 0。

group.add(this),是把當前線程加入到線程組,ThreadGroup。

start0(),是一個本地方法,通過 JNI 方式調用執(zhí)行。這一步的操作才是啟動線程的核心步驟。

上述內容就是怎么在java線程中使用start,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI