解決執行緒安全問題的第二種方法 同步方法

2021-10-10 11:01:51 字數 1269 閱讀 9532

上次我們使用同步**塊解決執行緒安全問題,這次我們將採用第二種方式,同步方法,簡單就是把同步**塊放在乙個方法裡。

格式:

修飾符 synchronized 返回值型別 方法名(引數列表)

使用步驟:

1.把訪問了共享資料的**抽出來。

2.在方法上新增synchronized修飾符。

***

*@author jianyeli */

public

class

runnableimpl

implements

runnable

//定義同步方法,把執行緒安全問題**塊放進裡面

//同步方法的機制原理是將用同步方法把同步**塊鎖住,然後只讓乙個執行緒執行,同步**塊我們使用的時候定義了乙個物件作為監視器,這次我們的物件直接是new runnable作為物件監視器。

public

synchronized

void

payticket()

}}}public

class

testrunnableimpl1}

以下是部分結果

出現執行執行緒時讀取的資料相同

thread-

0正在賣--

-->

100張票

thread-

1正在賣--

-->

100張票

thread-

1正在賣--

-->

97張票

thread-

1正在賣--

-->

96張票

thread-

1正在賣--

-->

95張票

thread-

1正在賣--

-->

94張票

thread-

1正在賣--

-->

93張票

thread-

1正在賣--

-->

92張票

thread-

1正在賣--

-->

91張票

thread-

1正在賣--

-->

90張票

thread-

1正在賣--

-->

89張票

thread-

1正在賣--

-->

88張票

解決執行緒安全問題的第二種方式 Lock 鎖

private lock lock new reentrantlock tryfinally 1.首先模擬乙個多執行緒 售票 的情境,此時存在重票或者錯票的安全問題 class subthread implements runnable catch interruptedexception e sy...

ITEXT 目錄生成的第二種方法

最近在用itext寫pdf報告,期間遇到目錄生成的問題,而目錄生成我認為最關鍵的是獲取章節的頁碼問題。下面分別介紹這兩種方法。除了這兩種方法之外,還可以參考我的另一篇部落格 itext 目錄生成的第三種方法 方法一 1 先生成不帶目錄的pdf檔案,命名為a.pdf。假設此時目錄應該在第3頁,分別從a...

java 多執行緒 建立自己的多執行緒 第二種方法

第一種方法在前一篇中,繼承thread 第二種方法 package a4 多執行緒 當乙個類有父類時就不能繼承thread,實現runnable介面是第二種方法 thread runnable target 1.實現runnable介面 2.實現run方法 3.通過thread類建立現成的物件,並將...