1. 程式人生 > >多執行緒之間實現同步

多執行緒之間實現同步

為什麼有執行緒安全問題

  當多個執行緒同時共享同一個全域性變數或靜態變數,做寫的操作時,可能會發生資料衝突問題,也就是執行緒安全問題。但是做讀操作是不會發生資料衝突問題。

什麼是多執行緒之間同步

  當多個執行緒共享同一個資源,不會受到其他執行緒的干擾。

需求說明:2個視窗同時賣100張火車票問題

執行結果:

執行緒安全解決辦法。

  使用多執行緒之間同步synchronized或使用鎖(lock)。

為什麼使用執行緒同步或使用鎖能解決執行緒安全問題呢?

  將可能會發生資料衝突問題(執行緒不安全問題)只能讓當前一個執行緒進行執行。程式碼執行完成後釋放鎖,然後才能讓其他執行緒進行執行。這樣的話就可以解決執行緒不安全問題。

原來:

     1、有一個執行緒拿到了鎖,其他執行緒已經有cpu執行權,一直排隊等待其他執行緒釋放資源。

     2、鎖在程式碼執行完成後或者丟擲異常情況下釋放。

     3、鎖已經被釋放的話,其他執行緒開始獲取鎖進入同步方法。

 

使用多執行緒之間同步synchronized或使用鎖(lock)