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

avec Java Discussion :

Mettre un délai entre deux itérations boucle for


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2024
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Mettre un délai entre deux itérations boucle for
    Bonjour, je suis étudiant et je débute en JAVA.
    je dois faire un projet pour mon école et je dois modéliser un flux d'eau, modélisé par des particules sphériques.
    J'aimerai savoir si il était possible de mettre des délais entre chaque itérations.
    En effet, le code ci dessous veut faire apparaitre une colonne de deux particules, mais je souhaiterais attendre afin de laisser du temps aux particules qui viennent d'apparaitre de se déplacer afin qu'elles ne se supperposent pas.

    Savez vous comment implémenter ce délai sans impacter l'interface graphique qui doit s'executer sans ce délai ? J'ai essayé avec thread.sleep mais cela ne fonctionne point.

    Bonne soirée à vous, et merci d'avance.

    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
     
     public NuageDeParticule(int n, double m){ //throws InterruptedException{
            this.lesParticules = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                if (i%10==0 ){
                Particule particule1 = new Particule(10,10,100,5,Color.RED);
                Particule particule2 = new Particule(14,10+3*Simulation.RAYON,100,5,Color.RED);
                this.lesParticules.add(particule1);
                this.lesParticules.add(particule2);
                //Thread.sleep(300);
                }
     
            }
     
        }

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Points : 901
    Points
    901
    Billets dans le blog
    5
    Par défaut
    Méthode 1
    A utiliser dans une boucle.

    Méthode 2 (Meilleure, mais demande un vrai travail d'architecture de code)
    On va faire la tache dans un Thread séparé.

    Pour cela, on différentie la tâche du lancement de la tâche.

    Je rappelle le principe suivant: "Je sais ce que tu fais, je ne veux pas savoir comment tu es codé".
    On manipule des contrat, en l'occurrence des Interfaces.

    Pour la tâche, c'est l'interface Runnable:
    https://docs.oracle.com/en/java/java.../Runnable.html

    Donc, ta tâche doit implémenter Runnable.

    Pour lancer la tâche, on le fait par ExecutorService:
    https://docs.oracle.com/en/java/java...orService.html

    Mais ça ne va pas répondre à ton besoin.
    En réalité, on va lancer par intermitence, de façon "Scheduled" la tâche.
    On va utiliser ScheduledExecutorService.
    https://docs.oracle.com/en/java/java...orService.html

    Soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Runnable maTache = ......//Ici, la tâche à effectuer
    try(ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor()){
         executor.schedule(maTache, 10, TimeUnit.SECONDE);//Lancement de ma tâche toute les 10s.
    }

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/07/2014, 16h17
  2. Boucle for contient un boolean entre deux classes
    Par cisco.nat dans le forum Langage
    Réponses: 5
    Dernier message: 23/07/2013, 13h24
  3. [Débutant] boucle for entre deux dates
    Par windows2056 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/07/2011, 11h08
  4. mettre une pause entre deux instructions
    Par christianf dans le forum C#
    Réponses: 3
    Dernier message: 21/02/2008, 14h43
  5. string.format : mettre un espace entre deux chiffres
    Par SOPRA-Eherve dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/03/2007, 14h55

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