Maison > Java > javaDidacticiel > Exemple de test Java pour analyser les caractéristiques réentrantes de ReentrantLock

Exemple de test Java pour analyser les caractéristiques réentrantes de ReentrantLock

WBOY
Libérer: 2023-05-09 18:07:08
avant
797 Les gens l'ont consulté

1. Concept

Verrou de lecture-écriture réentrant. Le verrou de lecture-écriture maintient un ReadLock et un WriteLock en interne. La couche inférieure est toujours AQS, mais AQS n'a qu'une seule quantité d'état. écrire en même temps ? , Les 16 bits de poids fort de l'état (int) sont utilisés ici pour représenter l'état de lecture, les 16 bits de poids faible représentent l'écriture, les 16 bits de poids fort représentent le nombre de threads qui acquièrent le verrou de lecture et le poids faible 16 bits représentent le numéro réentrant du verrou en écriture.

2. Le principe

est implémenté à l'aide de la file d'attente CAS+AQS. Il prend en charge les verrous équitables et injustes, et la mise en œuvre des deux est similaire

3, exemples

public class ReentrantDemo implements Runnable {
    Lock lock = new ReentrantLock();
    @Override
    public void run() {
        set();
    }
    public void set() {
        try {
            lock.lock();
            System.out.println("set 方法");
            get();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();// 必须在finally中释放
        }
    }
 
    public void get() {
 
        try {
            lock.lock();
            System.out.println("get 方法");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
        }
    }
    public static void main(String[] args) {
        ReentrantDemo reentrantDemo = new ReentrantDemo();
        new Thread(reentrantDemo).start();
    }
}
Copier après la connexion

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:yisu.com
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