J'utilise une bibliothèque externe dans Android qui a une ArrayList d'objets à laquelle on accède à partir d'un autre thread. Mon problème est que je voudrais déplacer certains objets de cette AarrayList d'une manière qui ne provoque pas d'exception nulle sur l'autre thread. Donc, ce que je veux faire est: J'ai une ArrayList ABCDEFGH, et je veux déplacer F de sa position actuelle à la première position, ainsi ArrayList deviendra FABCDEGH. Notez que je ne peux pas utiliser swap pour cela car tous les autres objets sont déplacés correctement.Quelle est la meilleure façon de déplacer un objet sur un thread ArrayList en toute sécurité?
Une implémentation naïve est:
list.remove(F);
list.add(0,F);
Mais cette cause de la mise en œuvre exception nulle de l'autre fil parce que l'autre thread est en boucle la liste en boucle comptée écrite à la main, à cause de la condition de la course la boucle de fil peut courir entre la suppression et l'ajout de F. Je ne peux pas rendre la bande de roulement ArrayList sûre parce que je n'ai pas accès à la bibliothèque externe.
Y a-t-il une meilleure façon de faire ce mouvement (de n'importe quelle position à n'importe quelle position de l'Arraylist) sans condition de course? Notez que la taille de ArrayList ne sera pas modifiée.
Possédez-vous le code qui fait la boucle et le supprimer/ajouter? Ou la boucle s'exécute-t-elle dans le code de la bibliothèque? – sudocode
La boucle s'exécute sur le code de la bibliothèque – Akira