線程基礎
05-13
一、線程狀態
二、線程的中斷機制
每個線程都有一個 打擾標誌。這裡分兩種情況:
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:並發 |