線程安全:當多個線程類并發操作某類的某個方法,(在該方法內部)來修改這個類的某個成員變量的值,
不會出錯,則我們就說,該的這個方法是線程安全的。
線程不安全(非線程安全):當多個線程類并發操作某類的某個方法,(在該方法內部)來修改這個類的某個成員
變量的值,很容易就會發生錯誤,故我們就說,這個方法是線程不安全的。如果要把這個方法變成線
程安全的,則用 synchronized關鍵字來修飾該方法即可。
總結:線程安全對共享變量互斥訪問 非線程安全不是 所以要是線程間數據相關則而又不是線程安全的話,很危險的
舉例說明:ArrayList和Vector、 HashMap和HashTable、StringBuilder和StringBuffer
ArrayList是非線程安全的,Vector是線程安全的;
HashMap是非線程安全的,HashTable是線程安全的;
StringBuilder是非線程安全的,StringBuffer是線程安全的。
ArrayList和Vector:
1、如果List不會被多線程并發訪問,使用ArrayList就沒有問題,而且速度效率要高些; 2、如果有多線程并發訪問List,可以使用Vector,也可以使用ArrayList,
并且自己對可能出現并發沖突的地方自行做synchronized處理。
簡單的來講,在多線程情況下 vector.add(e),這樣寫就好了,如果你用ArrayList.add(e),那么你就得這樣 synchronized(ArrayList) { ArrayList.add(e) } vector:內部已經做了這樣的處理了
新聞熱點
疑難解答