JAVA多執行緒 synchronized的作用

2021-08-21 12:11:46 字數 1069 閱讀 8809

在多執行緒執行中,兩個程式如果同時呼叫乙個資源,會容易出現錯誤,如下面**:

乙個圖書管理賬單。

class booking

catch(exception e)

amount=amount-num;

} else

system.out.println(" 還剩 "+amount+"件"); }}

class bookingtest implements runnable

public void run() }

public class buyitem

}

其中兩個執行緒公用執行緒c1乙個資源,所以就會出現錯誤,執行結果可能會出現:

預定 70 件 

預定 60 件 

還剩 20件

還剩 -40件

要解決這個問題就要用到synchronized這個修飾詞,被synchronized修飾的方法一但被乙個執行緒獲取,那只有等這個執行緒釋放了才會被其他執行緒獲取。

synchronized有幾種用法:

1:synchronized 方法宣告

2:方法宣告:}

其中如果obj是this,這兩者等效。

上述問題如下解決後:

class booking

catch(exception e)

amount=amount-num;

} else

system.out.println(" 還剩 "+amount+"件"); }}

class bookingtest implements runnable

public void run() }

public class buyitem

}

執行結果如下:

預定 60 件 

還剩 30件

剩餘的數量不夠,無法預定 

還剩 30件

我們發現問題解決了。

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...