您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在java線程中使用start,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Java中的集合主要分為四類:1、List列表:有序的,可重復的;2、Queue隊列:有序,可重復的;3、Set集合:不可重復;4、Map映射:無序,鍵唯一,值不唯一。
1.start()概念
開始一個線程后,線程就進入就緒狀態,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM調度并執行。但是這并不意味著線程就會立即運行。只有當cpu分配時間片時,這個線程獲得時間片時,才開始執行run()方法。
2.start()與run()區別
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 方法,使線程開始執行。其實這就是一個 JVM 的回調過程。
另外 start() 是一個 synchronized 方法,但為了避免多次調用,在方法中會由線程狀態判斷。threadStatus != 0。
group.add(this),是把當前線程加入到線程組,ThreadGroup。
start0(),是一個本地方法,通過 JNI 方式調用執行。這一步的操作才是啟動線程的核心步驟。
上述內容就是怎么在java線程中使用start,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。