java concurrency

synchronized 關鍵字,同一個對象之間互斥
synchronized static關鍵字, 同一個類的都互斥

其實是鎖機制的實現:
sychronized(obj){
}
相當於在塊開始處:lock-X(obj);塊結束處 unlock(obj); 先鎖住的對象後釋放
如果嵌套多個sychroized塊,相當於two-phase protocal  ->  操作成爲transaction, 最外層的塊不會被其他有衝突的線程打斷

wait(),notify(),notifyAll()從synchronized塊內部才能發出;會釋放所持有的鎖

sleep()不會釋放所持有的鎖

 

線程之間的控制(開始,結束)一般保存一個變量來表示線程要不要終止。當線程在sleep狀態,不能檢查這個變量,可以catch到interruptException來,進入catch塊,跳出例如while循環語句

線程terminated後不能再被調用.start()

疑問:當object裏有線程這類東西時,它什麼時候會被回收?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章