1、執行緒行程介紹:
程式:指令和資料的有序集合,靜態概念;
行程:執行程式的一次執行程序,一個動態概念,是系統資源分配的單位;
執行緒:cpu調度和執行的程序,是獨立的執行路徑,
他們之間的關系:一個行程可以包含多個執行緒,至少一個執行緒,
2、創建執行緒:
A、繼承Thread類,重寫run()方法;

B、實作Runnable介面,實作run()方法;

C、實作Callable介面

3、執行緒狀態

大致程序:new一個Thread后執行緒物件進入了新生狀態,當呼叫start()方法后,執行緒立即進入了就緒狀態,但是并不是一定立即調度執行;調度后進入了運行狀態,這時候執行緒才執行執行緒內的代碼;當運行時呼叫sleep、wait或同步的鎖定時,執行緒就進入了阻塞狀態,只有當阻塞事件解除后重新進入就緒狀態等著cpu調度執行,完成所有代碼后或者中斷那么執行緒進入死亡狀態,無法再次啟動此死亡執行緒,
Java執行緒的狀態有以下幾種:
- New:新創建的執行緒,尚未執行;
- Runnable:運行中的執行緒,正在執行
run()方法的Java代碼; - Blocked:運行中的執行緒,因為某些操作被阻塞而掛起;
- Waiting:運行中的執行緒,因為某些操作在等待中;
- Timed Waiting:運行中的執行緒,因為執行
sleep()方法正在計時等待; - Terminated:執行緒已終止,因為
run()方法執行完畢,
4、中斷執行緒

A、

B、sleep會使當前執行緒阻塞;時間到達后進入就緒狀態,每一個物件都有一個鎖,sleep不會釋放鎖,
C、Join會合并執行緒,插入后只有出入的執行緒執行完成后,才會執行其他執行緒,其他執行緒會阻塞,
D、在run()中使用Thread.yield()會使執行緒執行到此刻禮讓,但是不阻塞只是暫停,此刻cpu重新調度,但是禮讓不一定成功,取決于cpu再次調度了誰,
5、守護執行緒
執行緒有用戶執行緒和守護執行緒,虛擬機確保用戶執行緒執行完畢,但是不用等待守護執行緒執行完畢,
在呼叫start()方法前,呼叫setDaemon(true)把該執行緒標記為守護執行緒:
Thread t = new MyThread();
t.setDaemon(true);
t.start();
6、執行緒優先級

7、執行緒同步

有兩種此關鍵字用法,
A、synchronized方法
在方法加此關鍵字
B、synchronize塊


比較:

8、lock


9、執行緒通信


生產者消費者問題

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91775.html
標籤:Java
