二者如何取舍
非線程安全是指多線程操作同一個對象可能會出現(xiàn)問題邢滑。而線程安全則是多線程操作同一個對象不會有問題。
線程安全必須要使用很多synchronized關(guān)鍵字來同步控制窑业,所以必然會導(dǎo)致性能的降低钦幔。
所以在使用的時候,如果是多個線程操作同一個對象常柄,那么使用線程安全的Vector鲤氢;否則,就使用效率更高的ArrayList西潘。
非線程安全!=不安全
有人在使用過程中有一個不正確的觀點(diǎn):我的程序是多線程的卷玉,不能使用ArrayList要使用Vector,這樣才安全喷市。
非線程安全并不是多線程環(huán)境下就不能使用相种。注意我上面有說到:多線程操作同一個對象。注意是同一個對象品姓。比如最上面那個模擬寝并,就是在主線程中new的一個ArrayList然后多個線程操作同一個ArrayList對象。
如果是每個線程中new一個ArrayList腹备,而這個ArrayList只在這一個線程中使用食茎,那么肯定是沒問題的。
線程安全的實現(xiàn)
線程安全是通過線程同步控制來實現(xiàn)的馏谨,也就是synchronized關(guān)鍵字别渔。