1. 程式人生 > 實用技巧 >選擇排序和快速排序

選擇排序和快速排序

程序和執行緒

  • 程序作為資源分配的基本單位

  • 執行緒作為資源排程的基本單位,是程式的執行單元,執行路徑(單執行緒:一條執行路徑,多執行緒:多條執行路徑)。是程式使用CPU的最基本單位

執行緒有3個基本狀態

  • 執行、就緒、阻塞

執行緒有5種基本操作

  • 派生、阻塞、啟用、 排程、 結束

並行和併發

並行:

  • 並行性是指同一時刻內發生兩個或多個事件。

  • 並行是在不同實體上的多個事件

併發:

  • 併發性是指同一時間間隔內發生兩個或多個事件。

  • 併發是在同一實體上的多個事件

由此可見:並行是針對程序的,併發是針對執行緒的

建立多執行緒

  • 繼承Thread,重寫run方法

  • 實現Runnable介面,重寫run方法

run()和start()方法區別:

  • run():僅僅是封裝被執行緒執行的程式碼,直接呼叫是普通方法

  • start():首先啟動了執行緒,然後再由jvm去呼叫該執行緒的run()方法。

jvm虛擬機器的啟動是單執行緒的還是多執行緒的?

  • 是多執行緒的。不僅僅是啟動main執行緒,還至少會啟動垃圾回收執行緒的。

既然有兩種方式實現多執行緒,我們使用哪一種???

一般我們使用實現Runnable介面

  • 可以避免java中的單繼承的限制

  • 應該將併發執行任務和執行機制解耦,因此我們選擇實現Runnable介面這種方式

守護執行緒

守護執行緒是為其他執行緒服務的

  • 垃圾回收執行緒就是守護執行緒~

守護執行緒有一個特點

  • 當別的使用者執行緒執行完了,虛擬機器就會退出,守護執行緒也就會被停止掉了。

  • 也就是說:守護執行緒作為一個服務執行緒,沒有服務物件就沒有必要繼續執行

使用執行緒的時候要注意的地方

  1. 線上程啟動前設定為守護執行緒,方法是setDaemon(boolean on)

  2. 使用守護執行緒不要訪問共享資源(資料庫、檔案等),因為它可能會在任何時候就掛掉了。

  3. 守護執行緒中產生的新執行緒也是守護執行緒

  4. 守護執行緒可以自己退出,非守護執行緒只能手動退出,所以垃圾回收是守護執行緒,因為需要回收完之後自己退出,然後退出JVM