標籤:

線程基礎

一、線程狀態

二、線程的中斷機制

每個線程都有一個 打擾標誌。這裡分兩種情況:

1. 線程在sleep,wait,join,lock.lockInterruptibly, 此時如果別的進程調用此進程的 interrupt()方法,此線程會被喚醒並被要求處理InterruptedException;(thread在做IO操作時也可能有類似行為,見java thread api)

2. 此線程在運行中, 則不會收到提醒。但是 此線程的 「打擾標誌」會被設置, 可以通過isInterrupted()查看並 作出處理。

三、Linux環境中的分析方法

1) ps -ef | grep java 找到你的java程序的進程id, 定位 pid

2) top -Hp $pid, shift+t 查看耗cpu時間最多的幾個線程, 記錄下線程ID並轉換成16進位小寫 比如 : 0x12ef

c) kill -3 $pid 觸發tomcat的thread dump(jstack -p 進程號),找到tomcat的catalin.out 日誌, 把 上面幾個線程對應的代碼段拿出來.


推薦閱讀:

JDK並發類
CyclicBarrier
Mutex and Spinlock
semaphore

TAG:並發 |