Question de principe

Résolu
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 - 14 avril 2008 à 21:11
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 15 avril 2008 à 07:09
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
15 avril 2008 à 07:09
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
3
Rejoignez-nous