synchronisation de méthode static - Java - Programmation
Marsh Posté le 02-06-2004 à 15:04:21
ben synchronize
dans le cas de "static" ça synchronise sur l'objet MaClass.class.
Marsh Posté le 02-06-2004 à 15:07:11
Ben, merci beaucoup.
J'arrive jamais à m'y retrouver avec les "synchrinoze"
EDIT : synchronize (la preuve ! )
Marsh Posté le 02-06-2004 à 18:14:59
El_gringo a écrit : elle nécessite une synchronisation, non ? |
ben ca dépend, c'est pas sûr ...
est ce qu'elle partagent des variables suceptibles d'être modifiées durant le cours d'execution d'une de ces deux méthodes ?
si ce n'est pas le cas et qu'elles sont indépendantes, ca sert à rien de les synchronizer à part créer un goulot d'étranglement ...
Marsh Posté le 03-06-2004 à 08:56:54
benou a écrit : ben ca dépend, c'est pas sûr ... |
C'est justement là mon problème : je n'sais pas vraiment !
Les variables locales sont dupliquées si 2 thread exécutent simultanément une même méthode static ?
Pour nécessiter une synchronisation, il faudrait par exemple que cette méthode static écrive dans un attribut static. c'est ça ?
Marsh Posté le 03-06-2004 à 08:59:46
El_gringo a écrit : méthode static écrive dans un attribut static. c'est ça ? |
en gros oui.
Si toutes les actions lui sont locales, qu'aucun espace mémoire n'est partagé en écriture, elle est multithreadable.
Marsh Posté le 03-06-2004 à 09:04:23
oui, et mettre un "synchronize" ne résout rien en soit, il faut bien comprendre comment ça marche et le mettre au bon endroit.
je t'invite à lire ça :
http://java.sun.com/docs/books/tut [...] eaded.html
mais j'ai pas vraiment de texte miracle pour expliquer synchronize.
Marsh Posté le 03-06-2004 à 09:31:02
la synchronisation de threads c'est la mort
Marsh Posté le 03-06-2004 à 09:31:55
Harkonnen a écrit : la synchronisation de threads c'est la mort |
en assembleur peut être ...
en java, avec un peu de jugeote, d'habitude et beaucoup de vérification ca se fait ...
Marsh Posté le 03-06-2004 à 10:58:32
Harkonnen a écrit : la synchronisation de threads c'est la mort |
En C, oui. En Java, c'est pas censé être si terrible, grâce au mot clé "synchronize", justement. C'est bien pour ça que ça m'énerve de pas mieux m'en sortir.
Marsh Posté le 03-06-2004 à 10:59:20
nraynaud a écrit : oui, et mettre un "synchronize" ne résout rien en soit, il faut bien comprendre comment ça marche et le mettre au bon endroit. |
Merci. C'est déja pas mal ton tuto.
Marsh Posté le 03-06-2004 à 11:00:23
benou a écrit : en assembleur peut être ... |
Pour la jugeotte, j'éspère que la mienne est suffisante. Pour l'habitude, éspèrons que ça viendra. Mais c'est surtout de la doc qu'il me manque un peu. On va voir ce qu'on peut faire avec le tuto que ma passé Raynaud.
Marsh Posté le 03-06-2004 à 11:51:16
benou a écrit : en assembleur peut être ... |
je parlais d'un langage pour hommes comme le C++, pas d'un langage de lopettes
(merde c'est pas vendredi)
blague à part, la synchro de threads en C++, c'est une galère sans nom
edit:
Marsh Posté le 02-06-2004 à 14:58:42
J'ai 2 méthodes dans ma classe :
l'une :
public String crypt (String _in);
dans ce cas, appeler préalablement setKey (String _key)
l'autre
public static String crypt (String _in, String _key);
Comment faire pour n'avoir aucun risque lors d'une utilisation de la méthode static dans un cadre multi-threads ? elle nécessite une synchronisation, non ? et si oui, laquelle ?