java - 建立一個不重複的List集合,這個程式碼有什麼問題?
高洛峰
高洛峰 2017-06-12 09:25:37
0
2
1122

希望實作的功能是為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;  
    }  
}  
 

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
伊谢尔伦

ConcurrentSkipListSet不就行了

漂亮男人

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板