Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment laisser un certain temps pour repondre

    8 juillet 2019 à 17:18:55

    Bonjour.

    Je suis un peu débutant en java et je souhaiterai savoir comment laisser un certain temps à l'utilisateur pour répondre. Exemple: le programme pose une question et commence un compteur en arrière plan, et si un certain temps est dépassé, le programme s'arrête.

    Je ne sais pas pourquoi mais je sens que c'est quelque chose de tout simple mais je ne sais pas comment faire et comme je voudrais faire un programme qui pose des questions. Si vous voulez je peux vous envoyer mon programme.

    Je n'utilise que la console, ouvrir une fenêtre c'est encore trop compliqué pour moi...

    Je ne sais pas si il existe un autre moyen de récupérer une entrée texte mais moi j'utilise le Scanner(System.in) (ce qui est normal je pense).

    J'espère que vous avez compris mon problème et que j'aurai rapidement une réponse merci.

    • Partager sur Facebook
    • Partager sur Twitter
      8 juillet 2019 à 17:50:22

      Non, ce n'est pas tout simple. C'est même très compliqué.
      Ca s'appelle la concurrence, et il faut de bonnes bases de Java avant de s'y frotter.

      Si tu n'utilises que la console, un code comme celui-ci peut faire l'affaire :

      private final Thread thread = Thread.currenThread();
      new Thread() {
      
          @Override
          public void run() {
              try {
                  Thread.sleep(10000); // Attendre 10 secondes
                  thread.interrupt();
              catch (InterruptedException e) {
                  e.printStackTrace();
              }
          }
      
      }.start();
      
      ...
      /*
       * Plus loin dans ton code, il faut tester régulièrement
       * l'interruption ou non par le chronomètre
       */
      if (Thread.interrupted()) {
          throw new InterruptedException(); // ou return, tout simplement...
      }

      Par contre dès que tu utiliseras des interfaces graphiques, il va falloir bosser davantage.

      Le Scanner sur System.in, c'est en effet très bien pour lire les entrées clavier.

      -
      Edité par Zachee54 8 juillet 2019 à 19:02:22

      • Partager sur Facebook
      • Partager sur Twitter
        14 juillet 2019 à 16:30:05

        Pour ce qui est des Threads, je connais juste Thread.sleep() donc je ne sais pas où je dois le placer dans mon programme. Comme une méthode ou comme une classe ?

        Comme je suis en vacances je ne suis pas chez moi, je n'ai donc pas mon programme sous la main.

        • Partager sur Facebook
        • Partager sur Twitter
          15 juillet 2019 à 10:53:56

          Thread.sleep() est une méthode qui met en pause le thread dans lequel tu te trouves.

          Le problème, c'est que le thread est alors complètement paralysé pendant la durée que tu as indiqué. Il ne peut pas recevoir d'instruction au clavier, par exemple : il est occupé à attendre un certain temps.

          Dans les applications qu'on développe en tant que débutant, il n'y a qu'un thread. Donc cette instruction bloque tout le programme.

          C'est vraiment un sujet passionnant mais sensible. Regarde le chapitre Exécutez des tâches simultanément, puis le cours Java et le multithreading.

          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2019 à 18:59:12

            Pourquoi faire des threaad pour quelque chose qui peut etre testé sequentiellement ?

            while((System.currentTimeMillis()< END))
            {
                if (bufferedReader.available() > 0)
                    s += bufferedReader.readLine();
            }



            • Partager sur Facebook
            • Partager sur Twitter

            Comment laisser un certain temps pour repondre

            × 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