您的位置:首页技术文章
文章详情页

java - 构建一个不重复的List集合,这个代码有什么问题?

浏览:67日期:2023-11-06 16:49:17

问题描述

希望实现的功能是为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; } }

这个代码是线程不安全的吗?如果是,可以证明一下吗?谢谢

问题解答

回答1:

用ConcurrentSkipListSet不就行了

回答2:

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

标签: java