public static void main(Sting args[]){
Object a=null;
new Thread(){
a=new xxx()
}.start();
new Thread(){
a=new xxx()
}.start();
}
Je voudrais demander s'il existe une logique d'initialisation d'objet complexe dans la méthode xxx(). L'objet créé par le nouveau mot-clé est-il atomique ? Sinon, y aura-t-il un problème de trouble d’initialisation des objets ?
Je ne comprends pas ce que tu veux dire, si je suppose que c'est exact :
Tout dépend de la logique spécifique de votre méthode de construction. Après tout, le code est écrit par des humains.
Sortie :
Autre exemple, le constructeur contient un bloc de synchronisation, et chaque thread doit attendre la fin de l'exécution du thread précédent avant de pouvoir s'exécuter.
Sortie :
Il est recommandé de se référer au mode singleton thread-safe
Non, par exemple, si plusieurs éléments de logique sont écrits dans la méthode de construction, ils peuvent être interrompus lors de l'exécution de la méthode de construction.
La description de « atomicité » est trop abstraite. Lorsque l'affiche pose des questions, il vaut mieux ne pas penser que tout le monde a exactement la même compréhension d'un certain mot. Tout ce que je peux dire, c'est que le constructeur est thread-safe. Pour chaque objet, le constructeur ne sera exécuté qu'une seule fois et par un seul thread.