Java中synchronized的使用例項

2021-09-07 13:13:46 字數 1188 閱讀 6104

在負責後台開發的時候。非常多時候都是提供介面給前端開發者去呼叫,會遇到這種場景:

須要提供乙個領獎介面。每乙個username僅僅能領取一次,我們能夠將成功領取的使用者在資料庫用個標記儲存起來。如果這個使用者再來領取的時候,查詢資料庫看該使用者是否領取過。

可是問題來了,如果使用者手速非常快。極短時間內點了兩次領獎button(前端沒有進行控制,我們也不能依賴前端去控制)。

那麼可能掉了兩次領獎介面,並且有可能第二次呼叫的時候查詢資料庫的時候,第一次領獎還沒有執行完畢更新領獎標記。

這種場景就能夠使用到synchronized

**:

package com.luo.test;

public

class

syntest

public

void

test() throws interruptedexception

public

void

syn(string username) throws exception

}class synthread1 extends thread catch (exception e) }}

}

執行結果:

從結果來看,可知道。synchronized起作用了,這裡呼叫了兩次syn(string username)方法。期間設定其停留5秒,可是還是等第一次執行完。第二次呼叫才進入synchronized塊裡面的。

為了進一步確認我們的如果,我們不防把synchronized去掉例如以下:

public

void

syn(string username) throws exception

}

執行結果:

對照就可以分析出來了

使用方式從例項可看出來:

public

void

syn(string username) throws exception

}

用synchronized把**括起來。

Java執行緒同步問題synchronized

android usb 讀寫以前都是一讀一寫,但有些機器會出問題。就採用讀寫非同步的方法。使用物件鎖,object自帶的,然後使用object的方法wait和notify notifyall 使用方法簡單,記錄下 public synchronized int lra setregister int...

Java學習之執行緒鎖 synchronized

同步 併發 多個執行緒訪問同乙份資源 確保資源安全 執行緒安全 synchronized 同步 1 同步塊 synchronized 引用型別 this 類.class 2 同步方法 public synchronized void test public class testsyn class t...

Java中equalsIgnoreCase的用法

equalsignorecase public boolean equalsignorecase string anotherstring 將此 string 與另乙個 string 進行比較,不考慮大小寫。如果兩個字串的長度相等,並且兩個字串中的相應字元都相等 忽略大小寫 則認為這兩個字串是相等的...