多執行緒併發同步問題及解決方案
執行緒併發同步
執行緒同步其核心就在一個同步,即協同、配合,也就是按照預定順序先後的執行,也就是你做我等,你做完並返回,然後我開始執行。
執行緒同步就是當執行緒發出一個功能呼叫時,在沒得到結果前不會返回,且其他執行緒不能呼叫該方法。
在多執行緒裡面有些敏感資料不允許被多個執行緒同時訪問,使用執行緒同步就是要保證在一個時間內只有一個執行緒訪問一個資料,以此來保證資料的正確性。
執行緒同步中可能存在的安全隱患解決方法
1、同步程式碼塊
使用synchronized()對需要完整執行不許中斷的程式碼塊進行“包裹”,synchronized(object,obj)構造方法可以傳入任何類的物件,
但是既然是監聽器,就傳一個保證唯一的物件來“鎖”的唯一性,因此一般使用共享資源來作為object傳入synchronized()。
synchronized(this) {
// 先判斷賬戶現在的餘額是否夠取錢金額
if(count-money < 0){
System.out.println("賬戶餘額不足!");
return;
}
// 取錢
count -= money;
System.out.println(name+"...取出:"+money+"..."+Thread.currentThread().getName());
SelectAcount(name);
}
2、同步方法
即在需要同步的方法中宣告synchronized
public synchronized void addAcount(String name,int money) {
15 // 存錢
16 count += money;
17 System.out.println(name+"...存入:"+money);
18 }
3、同步鎖
呼叫lock()方法,待同步程式碼執行完之後在釋放鎖unlock()方法。
lock.lock();
try{
// 存錢
count += money;
System.out.println(name+"...存入:"+money);
}finally {
lock.unlock();
}
~~
死鎖問題
當執行緒同時持有多個鎖時,可能會出現死鎖問題。
即A持有執行緒鎖lock1 、B持有執行緒鎖lock2 。A接下來要呼叫lock2,而B接下來要呼叫lock1 ,同時兩者都不釋放現有鎖,即會造成死鎖現象。
相關文章
- 【java 多執行緒】多執行緒併發同步問題及解決方法Java執行緒
- 多執行緒的安全問題及解決方案執行緒
- 多執行緒併發執行及解決方法執行緒
- 如何解決多執行緒併發問題執行緒
- 多執行緒併發安全問題詳解執行緒
- java多執行緒詳解(併發,並行,同步)Java執行緒並行
- HashMap多執行緒併發問題分析HashMap執行緒
- 多執行緒併發常見問題執行緒
- 如何解決多程式或多執行緒併發的問題執行緒
- 多執行緒與併發----Semaphere同步執行緒
- Java多執行緒和併發問題集Java執行緒
- 多執行緒程式設計,處理多執行緒的併發問題(執行緒池)執行緒程式設計
- 多執行緒-同步程式碼塊解決執行緒安全問題的解釋以及同步的特點及好處和弊端執行緒
- 多執行緒高併發解決辦法執行緒
- Java多執行緒:資料一致性問題及解決方案Java執行緒
- 多執行緒-執行緒安全問題的產生原因分析以及同步程式碼塊的方式解決執行緒安全問題執行緒
- 多執行緒下的程式同步(執行緒同步問題總結篇)執行緒
- java多執行緒與併發 - 執行緒池詳解Java執行緒
- Java多執行緒/併發11、執行緒同步通訊:notify、waitJava執行緒AI
- Java多執行緒/併發12、多執行緒訪問static變數Java執行緒變數
- 多執行緒併發的一些解決思路執行緒
- 多執行緒問題解釋執行緒
- iOS多執行緒全套:執行緒生命週期,多執行緒的四種解決方案,執行緒安全問題,GCD的使用,NSOperation的使用iOS執行緒GC
- JAVA多執行緒併發Java執行緒
- Python執行緒安全問題及解決方法Python執行緒
- iOS 多執行緒--GCD 序列佇列、併發佇列以及同步執行、非同步執行iOS執行緒GC佇列非同步
- 多執行緒和多執行緒同步執行緒
- 多執行緒併發篇——如何停止執行緒執行緒
- 多執行緒與併發----CycliBarrier、CountDownLatch 和 Exchanger同步執行緒CountDownLatch
- jQuery同步Ajax帶來的UI執行緒阻塞問題及解決辦法jQueryUI執行緒
- 使用redis分散式鎖解決併發執行緒資源共享問題Redis分散式執行緒
- Java中解決多執行緒資料安全問題Java執行緒
- 多執行緒問題執行緒
- 最常見的15個Java多執行緒,併發面試問題Java執行緒面試
- Android中Sqlite資料庫多執行緒併發問題AndroidSQLite資料庫執行緒
- Java多執行緒與併發 - 瞭解“monitor”Java執行緒
- 多執行緒與高併發(一)多執行緒入門執行緒
- 多執行緒非同步安全,安全鎖的問題執行緒非同步