1. 程式人生 > 其它 >執行緒同步(同步程式碼塊 )

執行緒同步(同步程式碼塊 )

執行緒同步:為了解決執行緒安全問題。

1、取錢案例出現問題的原因?
多個執行緒同時執行,發現賬戶都是夠錢的。

2、如何才能保證執行緒安全呢?
讓多個執行緒實現先後依次訪問共享資源,這樣就解決了安全問題

執行緒同步的核心思想
加鎖,把共享資源進行上鎖,每次只能一個執行緒進入訪問完畢以後解鎖,然後其他執行緒才能進來。

執行緒同步解決安全問題的思想是什麼?
加鎖:讓多個執行緒實現先後依次訪問共享資源,這樣就解決了安全問題。

同步程式碼塊
作用:把出現執行緒安全問題的核心程式碼給上鎖。
原理:每次只能一個執行緒進入,執行完畢後自動解鎖,其他執行緒才可以進來執行。

synchronized(同步鎖物件) {

操作共享資源的程式碼(核心程式碼)

}

鎖物件要求
理論上:鎖物件只要對於當前同時執行的執行緒來說是同一個物件即可。

鎖物件用任意唯一的物件好不好呢?
不好,會影響其他無關執行緒的執行。
鎖物件的規範要求
規範上:建議使用共享資源作為鎖物件。
對於例項方法建議使用this作為鎖物件。
對於靜態方法建議使用位元組碼(類名.class)物件作為鎖物件

同步程式碼塊是如何實現執行緒安全的?
對出現問題的核心程式碼使用synchronized進行加鎖
每次只能一個執行緒佔鎖進入訪問

. 同步程式碼塊的同步鎖物件有什麼要求?
對於例項方法建議使用this作為鎖物件。
對於靜態方法建議使用位元組碼(類名.class)物件作為鎖物件。