Question de principe

Résolu
Signaler
Messages postés
152
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
8 octobre 2008
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
La pluspart d'entre vous vont penser que je suis débile ou tordu ou les deux, mais je poserai quand meme ma quesiton.

Si j'ai un objet tel que quand j'appele une méthode getdata() il met un peu de temps à me générer un string avec des etapes intermiédiaires en faisant appel à une connection SQL;

class mon_objet_sql{
    private Connection Conn;
    public String getdata(String _Sql){
        Statement Stat = Conn.createStatement();
        Stat.executeQuery(_Sql);
            [....]
          return result;
    }
}

Maintenant je déclare une classe qui contient une "instance statique" ce cet objet

class ma_classe_de_variables_statiques{
   public static mon_objet objetAlaCon=new mon_objet();
}

J'en arrive enfin à ma question: si j'a plusieurs threads ou dans le cas d'un servlet plusieurs utilisateurs qui font appel à:

ma_classe_de_variables_statiques.objetAlaCon.getdata(Sql)

est ce que les requetes des une vont influers sur les requetes des autres ?

Merci

1 réponse

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Salut,

Dans le cas d'une lecture, normalement non : chaque fonction s'exécutera dans un thread séparé, et s'il ne fait que lire les données (si elles ne sont pas modifiées en même temps que les fonctions les lisent !), il n'y a pas de raison qu'il te retourne des incohérences.

Mais si tu veux être sûr qu'il n'y ai pas de conflit, déclare des fonctions en "synchronized" : ainsi il ne pourra n'y avoir qu'une seule fonction exécutée en même temps (mais ca prendra bien plus de temps à exécuter sur des machines double-coeur ou plus !).
______________________________________
DarK Sidious