上次我們使用同步**塊解決執行緒安全問題,這次我們將採用第二種方式,同步方法,簡單就是把同步**塊放在乙個方法裡。
格式:
修飾符 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類建立現成的物件,並將...