首頁  >  問答  >  主體

java - 建立一個不重複的List集合,這個程式碼有什麼問題?

希望實作的功能是為List提供一個原子運算:若沒有則加入。因為ArrayList本身不是線程安全的,所以透過集合Collections.synchronizedList將其轉換為線程安全的類,然後透過一個輔助的方法來為List實作這麼個功能。

class BadListHelper <E> {  
    public List<E> list = Collections.synchronizedList(new ArrayList<E>());  

    public synchronized boolean putIfAbsent(E x) {  
        boolean absent = !list.contains(x);  
        if (absent)  
            list.add(x);  
        return absent;  
    }  
}  
 

這個程式碼是線程不安全的嗎?如果是,可以證明一下嗎?謝謝

高洛峰高洛峰2686 天前1086

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-06-12 09:27:37

    ConcurrentSkipListSet不就行了

    回覆
    0
  • 漂亮男人

    漂亮男人2017-06-12 09:27:37

    不重複的List,不就是個Set? ,需要原子,不就是執行緒安全的Set?

    回覆
    0
  • 取消回覆