多執行緒 同步問題

2021-10-06 19:26:07 字數 862 閱讀 9715

我們先看個錯誤示例。**功能:宣告乙個數字並賦值10000.然後讓1w個執行緒去減少1,1w個執行緒去增加1。理論上說,加一萬減一萬,最後數字的結果並不會改變。

**:

class errordemo

釋放object的方法:

synchronized**塊結束或者異常丟擲。

使用synchronized後的**

public class thread_synchronization

class errordemo

class errordemo{

public static void main(string args) throws interruptedexception {

//因為synchronized裡面要求的是物件,所以需要用integer宣告

integer num = 10000;

int n=10000;

//宣告執行緒陣列,在後面使用join讓主線程等待所有執行緒執行完。

// 不然主線程跑完了,其他執行緒沒執行完就輸出結果會不對的。

thread add=new thread[n];

thread reduce=new thread[n];

//建立1w個減少執行緒

for(int i=0;i最後的結果是10000

如果乙個類裡面的所有方法都被synchronized修飾,那麼這個類就是執行緒安全的類。

同一時間,只有乙個執行緒可以進入這個類的乙個例項去修改資料,以免多個執行緒同時修改資料,而產生髒資料。

多執行緒同步問題

在應用程式中使用多個執行緒的乙個好處是每個執行緒都可以非同步執行。對於 windows 應用程式,耗時的任務可以在後台執行,而使應用程式視窗和控制項保持響應。對於伺服器應用程式,多執行緒處理提供了用不同執行緒處理每個傳入請求的能力。否則,在完全滿足前乙個請求之前,將無法處理每個新請求。然而,執行緒的...

多執行緒同步問題

有四個執行緒1,2,3,4,執行緒1的功能就是輸出1,執行緒2的功能就是輸出2,以此類推.現在有四個檔案.abcd.初始都為空.現要讓四個檔案呈如下格式 a 1 2 3 4 1 2.b 2 3 4 1 2 3.c 3 4 1 2 3 4.d 4 1 2 3 4 1.設計程式.include sys ...

多執行緒 同步問題

我們先看個錯誤示例。功能 宣告乙個數字並賦值10000.然後讓1w個執行緒去減少1,1w個執行緒去增加1。理論上說,加一萬減一萬,最後數字的結果並不會改變。class errordemo t1.start reduce i t1 建立1w個增加執行緒 for int i 0 i t2.start a...