Java併發程式設計 業務資料的髒讀問題

2021-08-13 23:52:02 字數 1370 閱讀 2130

1.髒讀

概念:對於物件的同步和非同步的方法,我們在設計自己的程式時,一定要考慮問題的整體性,不然就會出現資料不一致的錯誤,很經典的就是髒讀問題

2.示例**

package com.thread.objectlock;

/** * 業務資料的髒讀問題(物件鎖的同步與非同步知識延伸)

* 要求取出的資料要有一致性,即讀前和讀後

* 避免髒讀,要保證加鎖的一致性,或加讀寫分離鎖

* @author lhy

* @time 2017.12.22

* */

public class dirtyread catch (interruptedexception e)

this.password = password;

system.out.println("setvalue最終結果: username = " + username + ", password = " + password); }

//初始時皆有synchronized,為了反映髒讀問題,去掉該方法的synchronized

public synchronized void getvalue()

public static void main(string args) throws exception

});t1.start();

thread.sleep(1000);

dr.getvalue();

}}

3.**分析:在我們對乙個物件的方法加鎖的時候,需要考慮業務的整體性,即為setvalue/getvalue方法同時加鎖synchronized同步關鍵字,保證業務(service)的原子性,不然會出現業務錯誤(也從側面保證業務的一致性)4.截圖:

4.1 setvalue/getvalue方法同時加鎖synchronized同步關鍵字

4.2 getvalue方法去掉加鎖synchronized同步關鍵字

網際網路併發程式設計(3) 髒讀

內容 資料的髒讀 對於物件的同步和非同步的方法中,我們在設計程式時候要注意問題的整體性,否則就會出現資料不一致情況,最典型的就是髒讀。髒讀的定義 髒讀又稱無效資料的讀出,是指在資料庫訪問中,事務t1將某一值修改,然後事務t2讀取該值,此後t1因為某種原因撤銷對該值的修改,這就導致了t2所讀取到的資料...

JAVA併發程式設計之多執行緒併發同步業務場景與解決方案

假如現在有20個人去售票廳買票,但是只有2個視窗,那麼同時只能有2個人買票,當2個人任意乙個人買好票離開之後,等待的18個人中又會有乙個人可以占用視窗買票 拆解 20個人就是20個執行緒 2個視窗就資源 實際含義就是 怎麼控制同一時間併發數為2 semaphore 訊號量 控制併發執行緒數 注意使用...

多執行緒之物件及變數的併發訪問 五 資料髒讀

在前面文章的學習中,我們一直都在圍繞 synchronized 來講述,在方法沒有同步處理的時候,多個執行緒訪問乙個例項變數的時候,這個值已經被其他的執行緒更改過了,所以會出現資料髒讀 dirtyread 這個資料髒讀也出現了好多次,那麼本文就來看看到底是什麼東西 執行緒資料髒讀跟資料庫的事務髒讀又...