synchronisation de méthode static

synchronisation de méthode static - Java - Programmation

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 ?

Reply

Marsh Posté le 02-06-2004 à 14:58:42   

Reply

Marsh Posté le 02-06-2004 à 15:04:21    

ben synchronize
 
dans le cas de "static" ça synchronise sur l'objet MaClass.class.


---------------
trainoo.com, c'est fini
Reply

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 ! :D )


Message édité par El_gringo le 02-06-2004 à 15:07:48
Reply

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 ...[:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-06-2004 à 08:56:54    

benou a écrit :

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 ...[:spamafote]


 
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 ?

Reply

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.

Reply

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.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 03-06-2004 à 09:31:02    

la synchronisation de threads c'est la mort :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-06-2004 à 09:31:55    

Harkonnen a écrit :

la synchronisation de threads c'est la mort :o


en assembleur peut être ...
 
en java, avec un peu de jugeote, d'habitude et beaucoup de vérification ca se fait ...


Message édité par benou le 03-06-2004 à 09:32:28
Reply

Marsh Posté le 03-06-2004 à 10:58:32    

Harkonnen a écrit :

la synchronisation de threads c'est la mort :o


 
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.

Reply

Marsh Posté le 03-06-2004 à 10:58:32   

Reply

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.
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.


 
Merci. C'est déja pas mal ton tuto.

Reply

Marsh Posté le 03-06-2004 à 11:00:23    

benou a écrit :

en assembleur peut être ...
 
en java, avec un peu de jugeote, d'habitude et beaucoup de vérification ca se fait ...


 
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.

Reply

Marsh Posté le 03-06-2004 à 11:51:16    

benou a écrit :

en assembleur peut être ...
 
en java, avec un peu de jugeote, d'habitude et beaucoup de vérification ca se fait ...

je parlais d'un langage pour hommes comme le C++, pas d'un langage de lopettes :o
(merde c'est pas vendredi)
blague à part, la synchro de threads en C++, c'est une galère sans nom :/
 
edit: [:benou_grilled]


Message édité par Harkonnen le 03-06-2004 à 11:51:47

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed