本篇文章為大家展示了怎么在java線程中使用start,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)主營甘州網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,APP應用開發(fā),甘州h5小程序開發(fā)搭建,甘州網(wǎng)站營銷推廣歡迎甘州等地區(qū)企業(yè)咨詢
創(chuàng)新互聯(lián)建站2013年至今,先為南江等服務建站,南江等地企業(yè),進行企業(yè)商務咨詢服務。為南江企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
Java中的集合主要分為四類:1、List列表:有序的,可重復的;2、Queue隊列:有序,可重復的;3、Set集合:不可重復;4、Map映射:無序,鍵唯一,值不唯一。
1.start()概念
開始一個線程后,線程就進入就緒狀態(tài),使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。但是這并不意味著線程就會立即運行。只有當cpu分配時間片時,這個線程獲得時間片時,才開始執(zhí)行run()方法。
2.start()與run()區(qū)別
start()是方法,它調(diào)用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 調(diào)用此線程的 run 方法,使線程開始執(zhí)行。其實這就是一個 JVM 的回調(diào)過程。
另外 start() 是一個 synchronized 方法,但為了避免多次調(diào)用,在方法中會由線程狀態(tài)判斷。threadStatus != 0。
group.add(this),是把當前線程加入到線程組,ThreadGroup。
start0(),是一個本地方法,通過 JNI 方式調(diào)用執(zhí)行。這一步的操作才是啟動線程的核心步驟。
上述內(nèi)容就是怎么在java線程中使用start,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。