Maison  >  Article  >  Java  >  Comment créer une ArrayList Thread-Safe lors du stockage d'objets de thread personnalisés en Java ?

Comment créer une ArrayList Thread-Safe lors du stockage d'objets de thread personnalisés en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 04:27:03565parcourir

How to Make an ArrayList Thread-Safe When Storing Custom Thread Objects in Java?

Rendre ArrayList Thread-Safe en Java : une approche alternative

Dans le contexte de la programmation multithread, il est essentiel de s'assurer que les ressources partagées , tels que les ArrayLists, sont accessibles en toute sécurité pour éviter les incohérences des données et les problèmes de concurrence. Cet article présente une approche alternative pour gérer la sécurité des threads d'une ArrayList en Java, en particulier lorsqu'elle contient des objets personnalisés qui étendent la classe Thread.

Dans votre scénario spécifique, vous disposez d'une ArrayList qui stocke les objets RaceCar, et une méthode de rappel (addFinisher) dans une classe Race qui remplit ArrayList avec des objets RaceCar terminés. Cependant, vous avez rencontré une erreur en essayant d'utiliser la méthode Collections.synchronizedCollection() pour rendre ArrayList thread-safe.

L'erreur que vous avez rencontrée provenait d'une incompatibilité de type entre Collection et ArrayList. Collections.synchronizedCollection() renvoie une collection, alors que vous tentiez de l'attribuer à une variable ArrayList. Au lieu de cela, vous devez utiliser la méthode Collections.synchronizedList(), qui renvoie une ArrayList thread-safe.

<code class="java">finishingOrder = Collections.synchronizedList(new ArrayList(numberOfRaceCars));</code>

En utilisant Collections.synchronizedList(), vous créez une nouvelle ArrayList synchronisée qui encapsule l'ArrayList sous-jacente. Cette liste synchronisée garantit que tous les accès à la liste sont synchronisés, empêchant plusieurs threads de tenter de la modifier simultanément.

Cette approche fournit un moyen pratique et efficace de rendre votre ArrayList thread-safe tout en conservant la fonctionnalité de votre code. Il vous permet d'ajouter et de récupérer en toute sécurité des objets RaceCar dans un environnement multithread sans vous soucier des problèmes d'intégrité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn