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

JavaFX Discussion :

JavaFX et pool de threads?


Sujet :

JavaFX

  1. #1
    Membre du Club
    JavaFX et pool de threads?
    Bonjour,
    je développe une application musicale, une sorte de boîte à rythmes multi-pistes.
    Pour le moment :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Boucle:
      Chercher un moment à jouer au temps actuel en vérifiant s'il n'a pas été joué au passage d'avant (dans la boucle)
      Si trouvé :
         Instancier un thread qui joue le media audio.
      Sinon dors un peu on attend ce qui vient.


    Le problème est une surcharge de Threads et beaucoup de NullPointerException. J'appelle Thread.stop() -- ce qui n'a aucun intérêt.

    En JavaFX on peut lire un média à la fois avec Media.play();

    Mais si je créais une classe ThreadPool et affecter à chaque media (pour moi sample ou mélodie ou échantillon vocal) un thread et mettre la boucle dans ces threads plutôt qu'avoir un thread principal. Est-ce que ça irait mieux ?

    ThreadPool
    Ajouter un morceau sur la piste -> affecter le morceau à un thread disponible. Marquer l'emplacement du thread comme occupé
    Supprimer un morceau de la piste -> mettre fin à la boucle joueuse. Marquer l'emplacement du thread (dans une liste) comme libre

    Pour moi, c'est pas évident les threads. Je ne sais pas si c'est ma machine qui est poussive (Dual Core Celeron) ou si je ne programme pas le logiciel de façon efficace.
    (exemple)

  2. #2
    Rédacteur/Modérateur

    Le problème est une surcharge de Threads et beaucoup de NullPointerException. J'appelle Thread.stop() -- ce qui n'a aucun intérêt.
    Pour arrêter un thread, il faut faire Thread.interrupt() et, dans la boucle du thread, vérifier son état et en sortir si besoin. Après lorsqu'on fait ça les opérations bloquantes (ex: lecture écriture IO) sont aussi sensée s’arrêter automatiquement d'elles-mêmes en levant une InterruptedException (probablement car elle vérifient elles-mêmes en interne régulièrement l’état du thread courant). Vu qu'on sait pas trop comment tu joues tes sons ni quelles sont les capacités de la lib que tu utilises, difficile de dire ce que sera le comportement dans ton cas.

    Pour le reste je sais pas si un thread pool est la bonne solution ou pas mais pour savoir si ton morceau a deja été joué, ben une liste ou une map synchronisée devrait faire l'affaire, non ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

###raw>template_hook.ano_emploi###