Maison  >  Article  >  Java  >  Analyse comportementale du saut de file d'attente sous différents modes de verrouillage en Java.

Analyse comportementale du saut de file d'attente sous différents modes de verrouillage en Java.

PHPz
PHPzavant
2023-04-23 09:13:171133parcourir

1. ReentrantReadWriteLock peut définir le mode de verrouillage équitable et le mode de verrouillage injuste.

// 公平锁模式
ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
//非公平锁模式 默认情况
ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(false);

Avant d'obtenir le verrou équitable, vérifiez la méthode readerShouldBlock() Avant d'obtenir le verrou en écriture, vérifiez d'abord la méthodewriterShouldBlock(), puis décidez si vous devez mettre en file d'attente ou sauter dans la file d'attente.

2. En mode de verrouillage injuste,writerShouldBlock() et readerShouldBlock() implémentent

final boolean writerShouldBlock() {
    return false; // writers can always barge
}
final boolean readerShouldBlock() {
    return apparentlyFirstQueuedIsExclusive();
}

unfair lock pour sauter dans la file d'attente lors de l'obtention du verrou en écriture. Utilisez les décisions politiques lors de la lecture des verrous.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer