java et 'synchronized' statement

Pàgina inicial

Reply to this message
Autor: Hugues Evrard
Data:  
A: guilde
CC: Frédéric
Assumpte: java et 'synchronized' statement

----- Mail original -----
> De: "Frédéric" <frederic.mantegazza@???>
> À: guilde@???
> Envoyé: Mercredi 19 Juin 2013 13:44:23
> Objet: java et 'synchronized' statement
>
> Bonjour,
>
> Est-ce que quelqu'un peut m'expliquer comment est utilisé l'argument
> passé à
> synchronized(), pour protéger une section de type mutex ?


http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html
https://en.wikipedia.org/wiki/Monitor_%28synchronization%29#Implicit_condition_variable_monitors

En bref, en java il y a un moniteur associé à chaque objet. Ce moniteur n'a qu'une seule variable de condition, et une seule file, ce moniteur sert de mutex. La fonction synchronized prend en argument n'importe quel objet et cherche à acquérir le lock avant d'exécuter la suite. A noter qu'il existe le mot-clé synchronized, qui si j'ai bien compris equivaut à synchronized(this) { <method body> }

Ce modèle n'est pas très propre, cf un article de Per Brinch Hansen (créateur, avec T. Hoare, du concept de moniteur de synchro):
http://brinch-hansen.net/papers/1999b.pdf

L'abstract du papier donne le ton:
"The author examines the synchronization features of Java and finds that they are insecure variants of his earliest ideas in parallel programming published in 1972-73. The claim that Java supports monitors is shown to be false. The author concludes that Java ignores the last twenty-five years of research in parallel programming languages."

--
Hugues Evrard