解決執行緒安全問題

2022-08-17 11:21:20 字數 1084 閱讀 4574

一(1).同步**塊:解決runnable的執行緒安全問題

**格式:

synchronized (同步監視器)

被同步的**:操作共享資料的**

共享資料:多個執行緒共同操作的變數

同步監視器:俗稱鎖,任何乙個類的物件都可以充當鎖。

//同步監視器中可以用this充當鎖

(2)解決繼承thread類的執行緒安全問題

synchronized (同步監視器)

//隨意造的乙個物件必須是靜態的statice,謹慎用this充當鎖;但是可以用類.class充當鎖

二(1)同步方法解決runnable的執行緒安全問題

把需要被同步的**抽離出來,再寫乙個方法放進去,在方法中加synchronized,並且在run方法中調此方法;把被同步的**放進去。

private synchronized void show()
(2)同步方法解決繼承thread的執行緒安全問題

把需要被同步的**抽離出來,再寫乙個方法放進去,在方法中加synchronized,並且在run方法中調此方法,同時設定為靜態方法,把被同步的**放進去。

都涉及同步監視器,非靜態同步方法中,同步監視器是this;靜態方法中,同步監視器是但還能類本身

三(1)lock鎖解決執行緒安全

首先例項化

class window implements

runnable

catch

(interruptedexception e)

system.out.println(thread.currentthread().getname() + "售票口:" +ticket);

ticket--;

} else

}finally

呼叫鎖定方法

try

synchronized與lock的不同:lock需要手動的啟動同步,以及手動結束同步,二sy在相應的**執行完之後自動的釋放同步監視器

解決執行緒的安全問題

synchronized的底層是使用作業系統的mutex lock實現的。1.作為方法的修飾符 方法的定義前面synchronized intadd int a,int b synchronized static intadd int a,int b 2.作為同步 塊synchronized 物件的...

什麼是執行緒安全問題 及怎麼解決執行緒安全問題

1.什麼是執行緒安全問題 就是 多執行緒環境中 且存在資料共享 乙個執行緒訪問的共享 資料被其他執行緒修改了,那麼就發生了執行緒安全問題 整個訪問過程中 無一共享的資料被其他執行緒修改了 就是執行緒安全的 程式中如果使用成員變數,且對成員變數進行資料修改 就存在資料共享問題,也就是執行緒安全問題 2...

執行緒安全問題

執行緒安全問題導致的原因 當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒有徹底執行完畢,此時另乙個執行緒參與進來執行,導致共享資料的錯誤。執行緒安全解決辦法 對多條操作共享的語句,每次只能讓乙個執行緒執行完成。在執行的過程中,其他執行緒不可以參與執行。解決方案 同步...