Java 靜態方法是線程安全的


先看一個類

public class  Test{

public static  String hello(String str){

    String tmp="";

    tmp  =  tmp+str;

   return tmp;

}

}

hello方法會不會有多線程安全問題呢?沒有!!

靜態方法如果沒有使用靜態變量,則沒有線程安全問題。

爲什麼呢?因爲靜態方法內聲明的變量,每個線程調用時,都會新創建一份,而不會共用一個存儲單元。比如這裏的tmp,每個線程都會創建自己的一份,因此不會有線程安全問題

 

注意,靜態變量,由於是在類加載時佔用一個存儲區,每個線程都是共用這個存儲區的,所以如果在靜態方法裏使用了靜態變量,這就會有線程安全問題!


總結:只要方法內含有靜態變量,就是非線程安全的

發佈了26 篇原創文章 · 獲贊 6 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章