為什麼執行緒執行要呼叫start而不是直接run

2021-10-02 17:47:18 字數 667 閱讀 5802

相當於玩遊戲機,只有乙個遊戲機(cpu),可是有很多人要玩,於是,start是排隊!等cpu選中你就是輪到你,你就run(),當cpu的執行的時間片執行完,這個執行緒就繼續排隊,等待下一次的run()。

呼叫start()後,執行緒會被放到等待佇列,等待cpu排程,並不一定要馬上開始執行,只是將這個執行緒置於可動行狀態。然後通過jvm,執行緒thread會呼叫run()方法,執行本執行緒的執行緒體。先呼叫start後呼叫run,這麼麻煩,為了不直接呼叫run?就是為了實現多執行緒的優點,沒這個start不行。

1.start()方法來啟動執行緒,真正實現了多執行緒執行。這時無需等待run方法體**執行完畢,可以直接繼續執行下面的**;通過呼叫thread類的start()方法來啟動乙個執行緒, 這時此執行緒是處於就緒狀態, 並沒有執行。 然後通過此thread類呼叫方法run()來完成其執行操作的, 這裡方法run()稱為執行緒體,它包含了要執行的這個執行緒的內容, run方法執行結束, 此執行緒終止。然後cpu再排程其它執行緒。

2.run()方法當作普通方法的方式呼叫。程式還是要順序執行,要等待run方法體執行完畢後,才可繼續執行下面的**; 程式中只有主線程——這乙個執行緒, 其程式執行路徑還是只有一條, 這樣就沒有達到寫執行緒的目的。

記住:多執行緒就是分時利用cpu,巨集觀上讓所有執行緒一起執行 ,也叫併發

為什麼要執行緒同步

class mythread2 implements runnable catch interruptedexception e system.out.println thread.currentthread getname 賣票,ticket this.ticket else public cla...

為什麼要建立執行緒池

在有些工作場景中,比如說伺服器程式設計中,如果為每乙個客戶都分配乙個新的工作執行緒,並且當工作執行緒與客戶通訊結束時,這個執行緒被銷毀,這就需要頻繁的切換工作執行緒,這會帶來一些負擔,最主要的是系統大的開銷和系統資源不足問題。首先,伺服器建立和銷毀工作執行緒的開銷很大,如果伺服器與很多客戶端通訊,並...

Windows為什麼要支援執行緒

windows為什麼要支援執行緒,程序與執行緒的聯絡與區別是什麼?在計算機的早期歲月,作業系統沒有提供執行緒概念。事實上整個系統只執行著乙個執行執行緒,其中同時包含作業系統 和應用程式。只用乙個執行執行緒的問題在於,長時間執行的任務會阻止其他任務執行。例如,在16位windows的那些日子,列印乙個...