recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Construisez une collection List non dupliquée, quel est le problème avec ce code?

La fonction

espère être implémentée est de réaliser une telle fonction pour 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;  
    }  
}  
 

Ce code est-il dangereux ? Si oui, pouvez-vous le prouver ? Merci

高洛峰高洛峰2723 Il y a quelques jours1125

répondre à tous(2)je répondrai

  • 伊谢尔伦

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

    Utilisez simplement ConcurrentSkipListSet et c'est très bien

    répondre
    0
  • 漂亮男人

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

    Une liste non répétitive n'est qu'un ensemble, n'est-ce pas ? , nécessite des atomes, n'est-ce pas un ensemble thread-safe ?

    répondre
    0
  • Annulerrépondre