java - Bina koleksi Senarai bukan pendua, apa yang salah dengan kod ini?
高洛峰
高洛峰 2017-06-12 09:25:37
0
2
1132
Fungsi

harap dapat dilaksanakan adalah untuk mencapai fungsi sebegitu untuk 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;  
    }  
}  
 

Adakah urutan kod ini tidak selamat? Jika ya, bolehkah anda membuktikannya? Terima kasih

高洛峰
高洛峰

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

membalas semua(2)
伊谢尔伦

Gunakan sahaja ConcurrentSkipListSet dan tidak mengapa

漂亮男人

Senarai yang tidak berulang hanyalah Set, bukan? , memerlukan atom, bukankah Set yang selamat untuk benang?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan