Maison  >  Questions et réponses  >  le corps du texte

Comment reentrantlock verrouille-t-il un objet spécifique ?

Si j'ai un objet tableau de longueur 10 :

Object[] arr=new Object[10];

L'accès à chaque objet s'exclut mutuellement, mais l'accès entre plusieurs objets peut être simultané.
Ensuite, en utilisant synchronisé, vous pouvez faire ceci :

synchoronized(arr[i]){
    //...
}

Je voudrais demander comment implémenter un tel verrouillage si vous utilisez le verrouillage réentrant ?

Remarque : Dois-je créer 10 tableaux de verrouillage en même temps pour ce scénario d'utilisation ? Lock[] lockList=new ReentrantLock[10]

if(lockList[i].trylock())[
    //
}

Est-ce le cas ?

扔个三星炸死你扔个三星炸死你2686 Il y a quelques jours870

répondre à tous(1)je répondrai

  • 代言

    代言2017-06-12 09:27:57

    Verrouillage d'initialisation :

    Lock[] lockList = new ReentrantLock[10];
    for (int i = 0; i < 10; i ++) {
        lockList[i] = new ReentrantLock();
    }
    

    Lorsque le verrouillage est requis :

    lockList[i].lock();
    try {
        ...
    } finally {
        lockList[i].unlock();
    }

    répondre
    0
  • Annulerrépondre