Utiliser Timeout pour éviter les interblocages dans le multithreading Java
L'un de la stratégie pour éviter la situation de blocage dans Java Multithreading est à l'aide de délai d'attente.
Supposons, un thread a acquis verrou sur une ressource et maintenant en attente de verrou sur une autre ressource. Après une certaine période de temps si elle ne peut pas acquérir de verrouillage sur resource2 alors il devrait arrêter attente de verrou sur resource2. Il doit être de verrouillage sur resource1. Ainsi, les blocages seront évités.
Mais comment la mettre en œuvre en Java ? Comment explicitement de la "libération" de verrouillage ? Comment définir le délai à attendre pour le verrou.
Ce qui est exact commandes java et de la syntaxe. Tout bonjour-worldish exemple s'il vous plaît ?
source d'informationauteur Kaushik Lele
Vous devez vous connecter pour publier un commentaire.
Voici un exemple artificiel avec 2 serrures et 2 fils qui tentent de les acquérir dans des ordres différents. Sans le délai d'expiration, le code de blocage.
mai de cette aide,
Serrure en Java
Dans le Java 8+ Simultanéité de l'API vous pouvez définir explicitement le temps pour
lock
attendre quand il est condition de:La serrure d'attente jusqu'à réception d'un
signal()
ousignalAll()
partir d'un autre thread ou jusqu'à ce que le temps de 1,2 secondes expire.