首页  >  问答  >  正文

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 天前1088

全部回复(2)我来回复

  • 伊谢尔伦

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

    ConcurrentSkipListSet不就行了

    回复
    0
  • 漂亮男人

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

    不重复的List,不就是个Set?,需要原子,不就是线程安全的Set?

    回复
    0
  • 取消回复