Articles of verrouillage

Java: RandomAccessFile thread-safe

Après quelques recherches sérieuses, j’ai découvert que la classe RandomAccessFile n’est pas thread-safe. Je pourrais maintenant utiliser un sémaphore pour verrouiller toutes les lectures et écritures, mais je ne pense pas que cela fonctionne très bien. En théorie, il devrait être possible de faire plusieurs lectures et une écriture à la fois. Comment puis-je faire […]

Comment faire un locking optimiste en veille prolongée

Je suis complètement nouveau dans Hibernate et Spring et dans ma tentative d’apprendre le spring, Hibernate, Maven, etc., je ne sais comment exécuter un exemple de bonjour en utilisant les trois. Avec mes connaissances de base, on m’a assigné une tâche pour effectuer un locking optimiste. En ce qui concerne Google, je ne peux que […]

Verrouillage de la fente par rapport aux bandes de locking

Ci-dessous, l’extrait de Effective Java de Joshua: Si vous synchronisez votre classe en interne, vous pouvez utiliser différentes techniques pour obtenir une simultanéité élevée, telles que le fractionnement de verrou, la segmentation de verrou et le contrôle de concurrence non bloquante. Ce qui précède suggère que le fractionnement de locking et le locking de bande […]

Pourquoi l’object de résultat dans FutureTask est non volatile?

J’ai lu la classe FutureTask dans jsr166, constaté que l’object de résultat est non volatile, les commentaires dans le code sont “non volatile, protégés par l’état lecture / écriture”, ligne 75, l’état est volatile int. J’ai lu le modèle de mémoire Java de Java Language Spec , mais je n’ai pas trouvé la réponse exacte. […]

Comment éviter que deux threads différents lisent les mêmes lignes à partir de DB (Hibernate et Oracle 10g)

Supposons que j’ai deux threads différents, T1 et T2, accédant simultanément à la même firebase database et récupérant les données de la même table. Maintenant, au démarrage du thread, je dois récupérer les données de la table et stocker les lignes dans une collection, que je vais ensuite utiliser pour effectuer du travail ailleurs. Je […]

Que se passera-t-il si les serrures elles-mêmes sont contestées?

Tous les objects en Java ont des verrous insortingnsèques et ces verrous sont utilisés pour la synchronisation. Ce concept empêche les objects d’être manipulés simultanément par différents threads ou permet de contrôler l’exécution de blocs de code spécifiques. Que se passera-t-il si les verrous eux-mêmes sont contestés – c’est-à-dire deux threads demandant le verrou à […]

java: wait (), notify () et blocs synchronisés

J’ai appris que l’appel de la méthode wait() un object libérera le moniteur d’objects, s’il est présent. Mais j’ai quelques questions concernant l’appel de notify() sur cet object par un autre thread: (Quand) le thread en attente se réveillera-t-il si un autre (un 3ème) thread possède le moniteur d’object entre-temps? le thread en attente se […]

“Atomiquement” mettre à jour un tableau entier

J’ai un seul thread d’écriture et un seul lecteur pour mettre à jour et traiter un pool de tableaux (références stockées dans la carte). Le rapport écrit / lecture est presque de 5: 1 (la latence des écritures est une préoccupation). Le thread écrivain doit mettre à jour quelques éléments d’un tableau du pool en […]

Comment traiter les verrous (JPA)?

Selon les wikibooks Java Persistent / Locking *, le meilleur moyen de gérer les verrous est de signaler l’erreur / exception de locking optimiste à l’utilisateur. Le problème est que ce n’est pas évolutif. Supposons que de nombreux utilisateurs risquent de provoquer un locking avec la même action. L’utilisateur ne se soucie pas du message […]

Modèle de mémoire Java: réorganisation et verrous simultanés

Les exigences du modèle Java Meomry qui synchronize blocs qui se synchronisent sur le même moniteur imposent une normalisation avant-après sur les variables modifiées dans ces blocs. Exemple: // in thread A synchronized( lock ) { x = true; } // in thread B synchronized( lock ) { System.out.println( x ); } Dans ce cas, […]