Je sais que la classe Properties est une sous-classe de Hashtable. Donc, toutes les méthodes héritées sont synchronisées, mais qu'en est-il des autres méthodes de propriétés telles que store, load, etc? (Avec Java spécifiquement Traitant 1.6)Toutes les méthodes de Java Properties sont-elles entièrement synchronisées?
Répondre
l'java1.6 javadoc dit:
Cette classe est thread-safe: plusieurs threads peuvent partager des propriétés individuelles objet sans besoin de synchronisation externe.
J'ai toujours trouvé la clause de non-responsabilité trompeuse, spécialement pour les débutants (pardonnez si ce n'est pas votre cas).
Cette classe est adaptée aux threads: plusieurs threads peuvent partager un même objet Properties sans nécessiter de synchronisation externe.
Même les classes thread-safe ont besoin d'être synchronisées plus que vous ne le pensez. Ce qui est synchronisé sur que les classes sont leurs méthodes, mais souvent un utilisateur utilise ces classes dans un contexte plus complexe.
Si vous ne mettez/get il est ok, mais avec un peu plus les choses de code se resserrent:
p.putProperty("k1","abc");
p.putProperty("k2","123");
String.out.println(p.get("k1")+p.get("k2"));
Ce code exemple imprime uniquement pour shure « abc123 » dans un environnement multithread, si la section est un bloc synchronisé (et même alors les choses pourraient mal se passer).
Pour cette raison (et de la performance courrse) je préfère fil non des classes sûres et je me forcé de penser: est mon programme thread-safe ...
référence obligatoire: http: //www.javaconcurrencyinpractice. com –