695
魔獸
並發基礎
1: 並發的簡短曆史
-
程序在各自的進程中運行.互相分離,各自獨立執行,由操作係統來分配資源.比如:
內存
文件句柄
安全證書
,如果需要相互通信的話,socket
signal handlers
shared memory
semaphores
文件
-
線程安全:
一個類是線程安全的,是指在被多個線程訪問時,類可以持續進行正確的行為.,對於線程安全類的實例進行順序或者並發
的一些列操作都不會導致實例處於無效狀態. -
synchronized
(1)鎖對象的引用 (2)鎖保護的代碼塊. - 每一個Java對象都可以隱式的扮演一個用於同步的鎖的角色,這些內置的鎖被稱為
內部鎖
或監視器鎖
,執行線程進入synchronized塊之前會自動獲得鎖,而無論通過正常路徑還是從快中拋出異常,線程都在放棄對synchronized塊的控製時自動釋放鎖.獲得內部鎖的唯一途徑:進入這個內部鎖保護的同步塊或方法
-
Reentrancy:
當一個線程請求其他線程已經占有的鎖時,請求線程將被阻塞,然而內部鎖
是可重進入
的,因此線程在試圖獲的它戰友鎖,請求會成功,重進入意味著請求是基於沒線程(per-thread)
,而不是基於per-invocation
的.重進入的實現是通過為每個鎖關聯一個請求計數器和一個占有它的線程,當計數器為0時,認為鎖是未占有的,占有一個線程計數器+1
-
最後更新:2017-09-24 23:32:41