在做乙個web專案的時候需要做乙個通用類去處理一些問題,想到這個類很多地方都有用到,又不想每次都new乙個,因此就定義了裡面的方法是靜態方法,然後又因為多個靜態方法都用到了同乙個物件,結果定義了乙個類的全域性變數讓每個靜態方法去呼叫它,剛開始沒什麼問題,後來專案上線沒多久就掛了,最後發現這樣做導致了多執行緒的併發問題,所以就想在這裡記錄一下…
下面是乙個例子,例如:
public class
testutil
public
synchronized
static
void
setname1
(string name)
}
總結:只要你的靜態方法不訪問全域性變數的話,就不會有併發問題
訪問全域性變數肯定會出現併發問題,這是毫無疑問的
靜態方法內部的變數,都是區域性變數,每次呼叫靜態方法時都會重新分配記憶體空間,所以是安全的
也就是是說只要你的靜態方法不訪問全域性變數的話,就不會有併發問題
Java static靜態變數 靜態方法
1.static關鍵字作用 static關鍵字修飾類成員變數 成員方法 內部類可以使這些類成員的建立和使用,直接與類相關而與具體例項無關。2.靜態變數 類變數 只在系統載入類時分配空間及初始化,建立該類例項時不再分配空間,為所有例項提供共享類的靜態變數。可進行例項間的通訊或者統計跟蹤是該類例項的數目...
Java static靜態方法 靜態變數
1.它為該類的公用變數,屬於類,被該類的所有例項共享,在類被載入時被顯式初始化,2.對於該類的所有物件來說,static成員變數只有乙份。被該類的所有物件共享!3.可以使用 物件.類屬性 來呼叫。不過,一般都是用 類名.類屬性 4.用static宣告的方法為靜態方法 5.不需要物件,就可以呼叫 類名...
java static靜態方法的併發性
在做乙個web專案的時候需要做乙個通用類去處理一些問題,想到這個類很多地方都有用到,又不想每次都new乙個,因此就定義了裡面的方法是靜態方法,然後又因為多個靜態方法都用到了同乙個物件,結果定義了乙個類的全域性變數讓每個靜態方法去呼叫它,剛開始沒什麼問題,後來專案上線沒多久就掛了,最後發現這樣做導致了...