Maison > Java > javaDidacticiel > Comment utiliser la fonction ThreadLocal en Java pour la manipulation de variables locales de thread

Comment utiliser la fonction ThreadLocal en Java pour la manipulation de variables locales de thread

WBOY
Libérer: 2023-06-26 17:12:08
original
1605 Les gens l'ont consulté

À mesure que les performances de l'ordinateur s'améliorent, la programmation multithread devient de plus en plus courante. La programmation multithread en Java est une fonctionnalité puissante qui nous permet d'effectuer plusieurs tâches simultanément. En programmation multithread, la fonction de variable locale de thread (ThreadLocal) est un mécanisme très utile qui permet à chaque thread d'avoir sa propre copie de la variable, évitant ainsi la concurrence entre les threads et les problèmes de pollution des données. Dans cet article, nous verrons comment utiliser la fonction ThreadLocal pour la manipulation de variables locales de thread en Java.

Présentation de ThreadLocal

La classe ThreadLocal est l'une des classes très importantes en Java et est principalement utilisée pour créer des variables locales de thread. Les variables ThreadLocal sont généralement des variables statiques utilisées pour stocker des informations étroitement liées à l'exécution du thread. Sur la plateforme Java, les variables ThreadLocal constituent un mécanisme de stockage local pour les threads. Les variables ThreadLocal sont différentes des variables ordinaires en ce sens que leurs valeurs ne sont accessibles que par le thread actuel.

Utilisez la fonction ThreadLocal en Java pour les opérations sur les variables locales de thread

  1. Créez des variables ThreadLocal

En Java, vous pouvez créer une variable ThreadLocal pour stocker les variables locales de thread, comme indiqué ci-dessous :

ThreadLocal<String> localVariable = new ThreadLocal<String>();
Copier après la connexion

L'instruction ci-dessus crée un ThreadLocal variable, il utilise des génériques pour spécifier le type de données stockées. Dans ce cas, les données de type String sont stockées.

  1. Stockage et accès aux variables ThreadLocal

Une fois la variable ThreadLocal créée, vous pouvez y stocker une valeur à l'aide de la fonction set() comme indiqué ci-dessous :

localVariable.set("Hello World");
Copier après la connexion

L'instruction ci-dessus stocke la chaîne "Hello World" dans le Variable ThreadLocal. Pour accéder à la valeur de la variable ThreadLocal, vous pouvez utiliser la fonction get() comme indiqué ci-dessous :

String value = localVariable.get();
Copier après la connexion

L'instruction ci-dessus lit et stocke la valeur stockée dans la variable ThreadLocal dans la valeur de la variable.

  1. Supprimer la variable ThreadLocal

Lorsque la variable ThreadLocal n'est plus nécessaire, elle doit être supprimée pour libérer de la mémoire comme indiqué ci-dessous :

localVariable.remove();
Copier après la connexion

L'instruction ci-dessus supprimera la valeur stockée de la variable ThreadLocal et libérera de la mémoire. .

Exemple de variables locales de thread

Maintenant, regardons un exemple d'utilisation de la fonction ThreadLocal. Dans cet exemple, nous allons créer un programme multi-thread où chaque thread aura sa propre variable ThreadLocal.

import java.util.Random;

public class ThreadLocalExample {

    // 创建ThreadLocal变量
    public static final ThreadLocal<Integer> randomNumber =
            new ThreadLocal<Integer>() {
                @Override
                protected Integer initialValue() {
                    Random rand = new Random();
                    return rand.nextInt(1000);
                }
            };

    public static void main(String[] args) {

        // 创建5个线程
        Thread[] threads = new Thread[5];
        for (int i = 0; i < 5; i++) {
            threads[i] = new Thread(new Runnable() {
                @Override
                public void run() {
                    int randomValue = randomNumber.get();
                    System.out.println(Thread.currentThread().getName()
                            + ": " + randomValue + " is a random number");
                    randomNumber.remove();
                }
            });
            threads[i].start();
        }
    }
}
Copier après la connexion

Résultat de sortie :

Thread-0: 155 is a random number
Thread-1: 764 is a random number
Thread-2: 283 is a random number
Thread-3: 633 is a random number
Thread-4: 245 is a random number
Copier après la connexion

Dans l'exemple ci-dessus, nous avons créé une variable ThreadLocal qui stocke des entiers aléatoires. Dans la fonction main(), nous créons 5 threads et accédons à la variable ThreadLocal dans chaque thread. La valeur initiale de la variable ThreadLocal est définie sur un nombre aléatoire avant d'accéder à la variable. Chaque thread lit ensuite un nombre aléatoire de la variable ThreadLocal et l'imprime sur la console. Après avoir imprimé la valeur, nous utilisons la fonction remove() pour supprimer la valeur dans la variable ThreadLocal.

Conclusion

Dans cet article, nous avons appris à utiliser la fonction ThreadLocal en Java pour les opérations de variables locales de thread. Les variables locales de thread sont un mécanisme très utile qui permet à chaque thread d'avoir sa propre copie d'une variable. Cela évite les conflits de threads et les problèmes de pollution des données. La création et l'accès aux variables ThreadLocal sont très simples et directes. Pour créer une variable ThreadLocal, utilisez simplement le constructeur de la classe ThreadLocal. Pour stocker une valeur dans une variable ThreadLocal, utilisez simplement la fonction set(). Pour lire une valeur d'une variable ThreadLocal, utilisez simplement la fonction get(). Enfin, lorsque la variable ThreadLocal n'est plus nécessaire, on peut la supprimer à l'aide de la fonction remove().

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal