Partage
  • Partager sur Facebook
  • Partager sur Twitter

deux class en paralelle en java

Sujet résolu
    18 novembre 2017 à 15:00:35

    bonjour, j'aimerais que deux classe tourne en parallèle sans que l'une bloque l'autre, je m’explique je voudrais créer un timer de 12 secondes, et permettre a l'utilisateur d'entrer une saisie dans les 6 secondes restantes (d'ou le timer)dans mon cas je veux que l'utilisateur entre ok, pour m'assurer que la console java est bien visible (et que le programme n'est pas lancé avec javaw)donc je crée une première classe main avec le timer et une seconde classe command qui heberge la commande pour saisir le texte,sauf que quand je lance le code le timer se stop en attendant la réponse de l’utilisateur, hors je veux que le timer continue et si l'utilisateur na pas répondu ok au bout de 12 secondes qu'il ferme le programme, sauf que du faite je ne sais pas comment faire :/

    package Main;
    import java.util.Scanner;
    
    public class Main {
    
    	static int count = 6;
    	
    	public static void main(String[] args) throws InterruptedException {
    		
    		while (count > 0) {
    			
    			for (int i = 0; i < 50; ++i) System.out.println();
    			System.out.println("démmarage du programme, entrez ok pour continnuer");
    			System.out.println(count + " secondes restantes");
    			System.out.print(">");
    			command.output();
    			Thread.sleep(2000);
    			count -=1;
    		}
    		
    	}
    
    }
    
    package Main;
    import java.util.Scanner;
    
    public class command {
    
    	public static void output() {
    		
    		Scanner sc = new Scanner(System.in);
    		String output = sc.nextLine();
    		if (output == "ok") {
    			System.out.println("fin test");
    
    		}
        }
    	
    }
    




    • Partager sur Facebook
    • Partager sur Twitter
      18 novembre 2017 à 15:44:52

      Tu dois penser à utiliser forcement un thread pour ta deuxième classe, la 2e des chose à ce que j'ai compris tu veux que la saisis soit infini à chaque fois il doit taper quelque chose sans que cela bloque ton timer, alors tu ne peux pas le mettre la command.output à l'intérieur de la boucle sinon il sera lancé autant de fois que ta boucle du timer tourne or à ce que j'ai compris ce sont des actions séparés.

      Alors je vais te donner quelque pistes je ne vais pas tout faire pour toi pour que tu cherches.

      Pour la première classe

      package Main;
      import java.util.Scanner;
       
      public class Main {
       
          static int count = 6;
           
          public static void main(String[] args) throws InterruptedException {
               
              new command().start();
              while (count > 0) {
                   
                  for (int i = 0; i < 50; ++i) System.out.println();
                  System.out.println("démmarage du programme, entrez ok pour continnuer");
                  System.out.println(count + " secondes restantes");
                  System.out.print(">");
                  //command.output(); à supprimer ici
                  Thread.sleep(2000);
                  count -=1;
              }
               
          }
       
      }      

      La deuxième classe qui sera le thread alors la méthode output sera mis dans le run du thread avec quelques modifications

      public /*static à supprimer*/ void output() {
               
      while(true){
              Scanner sc = new Scanner(System.in);
              String output = sc.nextLine();
              if (output == "ok") {
                  System.out.println("fin test");
                   break;
               }else System.out.println("tu n'a pas tapé ok");
      
      }



      Si tu veux échanger des informations saisis entre les deux classes il faut crée un objet(d'une nouvelle classe tu va créer aussi) que tu vas synchroniser son accès via les deux classes.

      -
      Edité par bilalsoidik 18 novembre 2017 à 15:50:03

      • Partager sur Facebook
      • Partager sur Twitter
        18 novembre 2017 à 15:48:21

        j'ai pas bien compris la dernière partie 
        Si tu veux échanger des informations saisis entre les deux classes il faut crée un objet(d'une nouvelle classe tu va créer aussi) que tu vas synchroniser son accès via les deux classes.
        mais tu ma déja bien aidé :D merci je corrige sa et je vais essayer de faire fonctionner ce bout de code ^^
        • Partager sur Facebook
        • Partager sur Twitter

        deux class en paralelle en java

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown