文章詳情頁
java - 構建一個不重復的List集合,這個代碼有什么問題?
瀏覽:48日期: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
排行榜
