併發程式設計1 檢視執行緒的stack資訊

2021-09-30 17:09:36 字數 337 閱讀 3647

有時候寫**,不小心就寫成了死迴圈,雖然機率不大,但是萬一遇到,我們要知道怎麼去排查這個問題。

一般情況下,我們可以通過jps名稱,檢視程序號

然後再通過jstack -l pid 檢視程序的堆疊資訊。

同時,我們寫**的時候,應該使用一些約定俗成的方法,避免產生死鎖問題。

1.避免乙個執行緒同時獲得多個鎖

2.避免乙個執行緒在鎖內部占用多個資源,盡量是乙個鎖占用乙個資源

3.多使用超時鎖,在使用jdk提供的鎖時,使用lock.trylock(timeout),這樣鎖等待超過時間就會自動釋放

4.對於資料庫鎖,加鎖釋放鎖要在乙個資料庫連線裡,否則釋放鎖會失敗。

併發程式設計(1) 執行緒基本狀態和執行緒的建立

1.新建狀態 new 執行緒物件建立後將納入新建狀態.thread t new thread 2.就緒狀態 runnable 呼叫start 進入就緒狀態 3.執行狀態 running cpu開始排程處於執行狀態的執行緒,此執行緒才真正執行 4.阻塞狀態 blocked 處於執行時的執行緒由於某種原...

併發程式設計 1

目錄 程序 程序即正在執行的乙個過程。程序是對正在執行程式的乙個抽象。將應用程式對硬體資源的靜態請求變得有序化 併發 看起來是同時執行的 並行 真正做到了同時執行 多道技術 了解 空間復用 共用乙個記憶體條,每乙個程序都有自己獨立的記憶體空間,互不干擾,物理級別的隔離 時間復用 共用乙個cpu cp...

併發程式設計1

1 程序與程式 程序 正在執行的乙個過程。程序是對正在執行程式的乙個抽象 程式 是由程式設計師將自己的思維邏輯按照某種程式語言規範編寫下來的一堆字串,最終形成的一堆檔案 程序是由程式產生的,沒有程式就沒有程序 2 作業系統與程序 應用程式無法直接執行在硬體之上,一定要借助作業系統 所以程序是由作業系...