Je viens avec cette question lors de l'implémentation du modèle singleton en Java. Même si l'exemple ci-dessous n'est pas mon vrai code, pourtant très similaire à l'original.Comment synchroniser la méthode statique dans Java
public class ConnectionFactory{
private static ConnectionFactory instance;
public static synchronized ConnectionFactory getInstance(){
if(instance == null){
instance = new ConnectionFactory();
}
return instance;
}
private ConnectionFactory(){
// private constructor implementation
}
}
Parce que je ne suis pas tout à fait sûr du comportement d'une méthode synchronisée statique, je reçois une suggestion de Google - ne pas (ou le moins possible) plusieurs méthodes synchronisées statiques dans la même classe. Je suppose que lors de l'implémentation de la méthode synchronisée statique, un verrou appartenant à l'objet Class est utilisé afin que plusieurs méthodes synchronisées statiques puissent dégrader les performances du système.
Ai-je raison? ou JVM utiliser un autre mécanisme pour implémenter la méthode statique synchronisée? Quelle est la meilleure pratique si je dois implémenter plusieurs méthodes synchronisées statiques dans une classe?
Merci à tous!
Cordialement!
Votre code réel également préoccupé par l'initialisation paresseuse? Parce que c'est généralement un gaspillage de code et de temps de développement; initialiser le champ dans sa déclaration est la bonne chose à faire 99% du temps et rend la synchronisation inutile. –