線程安全、非線程安全

線程安全:多個線程類併發操作某類的某個方法,(在該方法內部)修改這個類的某個成員變量的值,

                    不會出錯,則我們就說,該的這個方法是線程安全的。

線程不安全(非線程安全):多個線程類併發操作某類的某個方法,(在該方法內部)修改這個類的某個成員

                    變量的值,很容易就會發生錯誤,故我們就說,這個方法是線程不安全的。如果要把這個方法變成線

                    程安全的,則用 synchronized關鍵字來修飾該方法即可。

總結:線程安全對共享變量互斥訪問 
            非
線程安全不是
            所以要是線程間數據相關則而又不是線程安全的話,很危險的

舉例說明:ArrayListVector、 HashMapHashTable、StringBuilderStringBuffer

                    ArrayList是非線程安全的,Vector是線程安全的;

         HashMap是非線程安全的,HashTable是線程安全的;

         StringBuilder是非線程安全的,StringBuffer是線程安全的。

       ArrayListVector:

      1、如果List不會被多線程併發訪問,使用ArrayList就沒有問題,而且速度效率要高些;
      2、如果有多線程併發訪問List,可以使用Vector,也可以使用ArrayList,

         並且自己對可能出現併發衝突的地方自行做synchronized處理。

簡單的來講,在多線程情況下 vector.add(e),這樣寫就好了,如果你用ArrayList.add(e),那麼你就得這樣 

synchronized(ArrayList) 

    ArrayList.add(e) 


vector:內部已經做了這樣的處理了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章