Comment déterminer si un objet est verrouillé (synchronisé) afin de ne pas bloquer en Java?

J'ai un processus qui contient un tableau en mémoire avec un jeu d'enregistrements (recordA, recordB, etc...)

Maintenant, ce processus peut lancer plusieurs threads qui affectent les enregistrements, et parfois on peut avoir 2 threads tentent d'accéder à l'enregistrement de même - cette situation doit être rejetée. Spécifiquement si un enregistrement est VERROUILLÉ par un fil, je veux l'autre fil à l'avortement (je ne veux pas BLOQUER ou d'ATTENTE).

Actuellement je fais quelque chose comme ceci:

synchronized(record)
{
performOperation(record);
}

Mais c'est me causer des problèmes ... parce que tout de Fabrication1 effectue l'opération, si Process2 arrive blocs/l'attend sur le synchronisée instruction et lors de Fabrication1 est terminé, il effectue l'opération. Au lieu de cela, je veux quelque chose comme ceci:

if (record is locked)
   return;

synchronized(record)
{
performOperation(record);
}

Des indices sur la façon dont ceci peut être accompli?
Toute aide serait grandement appréciée.
Merci,

InformationsquelleAutor Shaitan00 | 2009-11-22