天天看點

Java多線程(二)線程安全問題

線程安全問題

什麼是線程安全問題?

多個線程操作同一個共享資源的時候可能會出現線程安全問題。

如何解決線程安全問題?

使用線程同步

線程同步

什麼是線程同步?

線程同步是多個線程同時通路同一個資源。

線程同步的作用:

就是為了解決線程安全問題的方案

如何實作線程同步?

把共享資源進行上鎖,每次隻能一個線程進入通路完畢後,其他線程才能繼續通路。

線程同步的方式有三種:

--1.同步代碼塊

--2.同步方法

--3.lock顯示鎖 同步代碼塊

同步代碼塊

作用:把出現線程安全問題的核心代碼給上鎖,每次隻能一個線程進入,執行完畢以後自動上鎖,其他線程才可以進來執行。

格式:

鎖對象建議使用共享資源

--在執行個體方法中建議使用this作為鎖對象。此時this正好是共享資源!

--在靜态方法中建議使用類名.class位元組碼作為鎖對象。

同步方法

作用:

把出現線程安全問題的核心方法給鎖起來

每次隻能使一個線程進入通路,其他線程必須在方法外面等待。

用法:

直接給方法加上一個修飾符 synchronized

lock顯示鎖

java.util.concurrent.locks.Lock機制提供了比synchronized代碼塊和synchronized方法更廣泛的鎖操作,同步代碼塊/同步方法具有的功能Lock鎖都有,除此之外更強大更友善

Lcok鎖也稱同步鎖,加鎖與釋放鎖方法化了,如下:

執行個體:

繼續閱讀