IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

while (plusieurs conditions) suivi d'un wait


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Points : 52
    Points
    52
    Par défaut while (plusieurs conditions) suivi d'un wait
    Bonjour à tous,

    Je développe sur Android mais le problème est un problème de Java en général.
    J'ai un problème que je n'arrive pas à résoudre, et je me demande si le problème en question n'a juste pas de solution en Java!

    Est-il possible en Java d'avoir la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    	public synchronized void run() {
    		while(!condition1 || !condition2){
    			try {
    				wait();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
                    // traitement lorsque les deux conditions sont vraies
    	}
     
    	public synchronized void méthode1(params){
    		//traitement qui permet de rendre vraie la première condition
    		notifyAll();
    	}
     
    	public synchronized void méthode2(params) {
    		//traitement qui permet de rendre vraie la seconde condition
    		notifyAll();
    	}
    Autrement dit, vous l'aurez compris, est-il possible d'avoir wait dans une boucle while qui requiert deux conditions?
    Svp, c'est urgent, j'y suis depuis ce matin

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il suffit d'utiliser un ET (&&) au lieu d'un OU (||)...

    a++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    ça marche peut-être mais ça ne fera pas ce que je veux!
    Il faut que les deux conditions soient vraies pour que je sorte du wait, or avec ce que tu me proposes, dès qu'une des deux conditions est vraie (même si l'autre ne l'est pas), je sors du wait

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je suis un peu fatigué ces derniers temps... il faut mettre la négation sur tout le bloc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while ( !(condition1 && condition2) )

    a++

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    le plus simple c'est de faire le notify uniquement au moment où les deux conditions sont satisfaites.

  6. #6
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while ( !(condition1 && condition2) )
    ce qui revient au même que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while ( !condition1 || !condition2 )
    et nous revoilà au 1er message

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Et dans les deux cas cela fait ce qui était démandé : sortir de la boucle quand les deux variables "conditions" valent true...

    Donc : quel est le problème ?


    a++

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Le problème, c'est que ça ne marche pas.

    Je suis en train d'essayer ce qu'a proposé tchize_ et je vous tiens au courant!

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par androidisme Voir le message
    Le problème, c'est que ça ne marche pas.
    C'est à dire ?

    a++

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    En fait, plus important : elle est censée garantir quoi, cette structure ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    @adiGuba : j'avais beau avoir mes deux conditions réunies, ça ne passait jamais

    J'ai finalement utilisé qu'une unique condition comme l'a suggéré tchize_, et ça marche, bien que ça complexifie le code!

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    En même temps, le code multithreadé, en dehors des langages faits pour... -_-°

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème boucle WHILE/WEnd avec plusieurs conditions
    Par Romanaxx dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/12/2013, 15h00
  2. Plusieurs conditions dans un while/wend, possible?
    Par rsoul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2008, 15h10
  3. plusieurs condition dans un while
    Par realkilla dans le forum C#
    Réponses: 4
    Dernier message: 17/05/2008, 16h16
  4. Plusieurs conditions dans un while
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 11/01/2008, 17h44
  5. [Bash] mettre plusieurs conditions dans un while
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 22/07/2007, 22h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo