多執行緒相關概念
Java程式都是從main方法開始順序執行每行程式碼,程式碼執行完成之後,結束整個應用程式。這樣順序執行的程式稱為單執行緒程式,單執行緒程式在同一個時間內只執行一個任務。在實際處理問題的過程中,單執行緒程式往往不能適應複雜的業務需求。例如,在WEB專案中,多個使用者通過瀏覽器客戶端向伺服器端發出請求,如果伺服器端採用單執行緒程式處理使用者傳送的請求,將會導致使用者等待響應時間過長,服務效率低下的問題。要想縮短使用者等待時間,提高服務效率,可以採用多執行緒的程式來同時處理多個請求任務。
多執行緒程式將單個任務按照功能分解成多個子任務來執行,每個子任務稱為一個執行緒,多個執行緒共同完成主任務的執行過程。例如,前面提到的WEB專案,伺服器端主程式將使用者的每個請求建立一個執行緒(子任務)去處理使用者的請求,這樣就可以提高伺服器端的服務效能,縮短使用者等待響應時間。
使用多執行緒的好處:
使用執行緒可以增強互動性。使用執行緒就可以非同步 的反方式執行程式碼。通俗來講,如果在程式碼中有一段程式碼較為耗時,或者需要等待某種條件,如果使用程序,該段程式碼下面的程式碼就必須等待該段程式碼執行完之後才能執行,同時使用者滑鼠鍵盤的操作,計算機也不會理會,從來影響互動性。但是如果把耗時的操作放線上程中,他就會獨立的執行,執行緒外的程式碼就不用等待它執行結束。
減少開銷。開啟一個執行緒,就必須給它分配記憶體空間,如果將多個執行緒放在同一個程序中,那麼這些執行緒是資源共享的,主要是堆記憶體中資源,但是棧是一個程序所私有的,不被共享。
現在很多的計算機都是多CPU多核心的。只有在多執行緒的情況下,他們才能發揮作用,如果使用單執行緒,就是一種資源的浪費
使用多執行緒可以簡化開發,將可以非同步執行的程式碼分離出來,放在run()方法中,使程式碼不至於太過複雜,跟容易閱讀理解。