google-code-prettify

2015年2月20日 星期五

執行緒

直達java虛擬機器


  • 阻塞同步 (bloking synchronize) 悲觀, 資源競爭就要鎖


執行緒---互斥 為因  同步為果

synchronized 同步區塊對同一條執行緒來說是可重入的, 不會出現自己卡死自己的情況

同步區塊在已進入的執行緒 完成之前, 會阻塞其他執行緒的進入

java執行緒是  映射到   作業系統 原生執行緒上的

阻塞或喚醒執行緒需要 ( 作業系統 從使用者狀態 換到核心狀態  的  ) 狀態轉換,

耗費許多處理器時間,可能比  使用者程式執行時間  還要久


synchronized 是重量級操作 (Heavy weight)

在通知系統主塞執行緒 , 進入核心狀態之前, 會先加入自旋鎖, 避免頻繁切入核心狀態


java.util.concurren (J.U.C) ReentrentLock重入鎖 實現 同步


公平鎖: 鎖解開後 有序的使用:反之 不公平, 競爭 鎖,

等待可中斷: 鎖被占用很久, 不等轉作其他任務

鎖對應多個條件: ReentrentLock 可直接多設幾個條件就好

synchronized  要多設幾個鎖

1.6之後 synchronized  ReentrentLock 持平


  • 非阻塞同步 (non-bloking synchronize), 衝突偵測, 重試 共用資料 直到不衝突





沒有留言:

張貼留言