2017-10-01 2 views
-2

Je suis novice dans le domaine du threading, mais j'ai besoin de threads pour que mon application javafx fonctionne. Mon problème est que j'ai besoin d'effectuer beaucoup de calculs dans mon programme, et mettre à jour l'interface utilisateur périodiquement entre les deux. Je suis conscient que faire des calculs dans le thread javafx bloque la mise à jour de l'interface utilisateur, je dois donc déplacer ce travail vers un autre thread. Ce que je dois savoir, étant donné que je n'ai jamais travaillé avec des threads auparavant, est de savoir quelle est la meilleure façon de démarrer ce thread périodiquement, de faire une partie des calculs et de renvoyer les résultats au thread javafx.Meilleure façon de récupérer les résultats d'un thread régulièrement

+3

Pouvez-vous être plus précis, par ex. poster un exemple simple de ce que vous essayez de faire? Il est probablement plus facile pour vous d'apprendre ceci en voyant d'abord quelques exemples pertinents, plutôt qu'une description générale de son fonctionnement, et une bonne réponse à la question telle qu'elle est actuellement formulée devrait fondamentalement être un tutoriel complet sur le multithreading. –

+0

Cet exemple [https://stackoverflow.com/a/44056730/230513] calcule les résultats en arrière-plan et publie des résultats intermédiaires pour l'interface graphique d'écoute à afficher. – trashgod

+0

Le programme est une implémentation du jeu de la vie, fondamentalement, ce que je veux faire est de rendre la toile montrant l'état des cellules, attendre un certain temps, puis mettre à jour les cellules et rendre le canevas à nouveau. J'ai été capable de faire déjà ceci, cependant, en utilisant un service d'exécuteur programmé, ainsi je suppose que j'ai demandé trop tôt – JG55

Répondre

0

Généralement, vous utilisez des interfaces (comme l'interface Runnable) ou une bibliothèque de bus de messages pour préformer les «abonnements» aux événements de threads, appelés «callbacks».

Implementing callbacks in Java with Runnable

Le motif "observateur" est généralement quelque chose à la recherche. Ou "Publier Abonnez-vous" (non lié à une bibliothèque ou un outil comme Google PubSub)

RxJava expose quelques bons motifs autour de cela, mais peut être plus compliqué que nécessaire.

Les résultats périodiques nécessitent un objet de type Timer, mais l'idée est la même.