1. 程式人生 > >執行緒安全的類相關

執行緒安全的類相關

不安全的原因是因為共享變數被多個執行緒呼叫而出現數據錯亂

而前面講到的鎖就是讓其同步操作,同一時刻只有一個執行緒可以操作這個變數,達到資料的一致性和同步性。

 步驟 1 : 

HashMap和Hashtable的區別

HashMap和Hashtable都實現了Map介面,都是鍵值對儲存資料的方式
區別1: 
HashMap可以存放 null
Hashtable不能存放null
區別2:
HashMap不是執行緒安全的類
Hashtable是執行緒安全的類

 步驟 2 : 

StringBuffer和StringBuilder的區別

StringBuffer 是執行緒安全的
StringBuilder 是非執行緒安全的

所以當進行大量字串拼接操作的時候,如果是單執行緒就用StringBuilder會更快些,如果是多執行緒,就需要用StringBuffer 保證資料的安全性

非執行緒安全的為什麼會比執行緒安全的 快? 因為不需要同步嘛,省略了些時間

 步驟 3 : 

ArrayList和Vector的區別

通過在eclipse中檢視原始碼可以得知:

ArrayList類的宣告:

public class ArrayList<E> extends AbstractList<E>

implements List<E>, RandomAccess, Cloneable, java.io.Serializable



Vector類的宣告:

public class Vector<E> extends AbstractList<E>

implements List<E>, RandomAccess, Cloneable, java.io.Serializable



一模一樣的~ 
他們的區別也在於,Vector是執行緒安全的類

,而ArrayList是非執行緒安全的。

————————————————————————————————————————————————————————

Collections.synchronizedList(),可以將arraylist轉換為線性安全的list

 

public class TestThread {

    

    public static void main(String[] args) {

        List<Integer> list1 = new ArrayList<>();

        List<Integer> list2 = Collections.synchronizedList(list1);

    }