J'aime la simplicité de invokeLater()
pour envoyer des unités de travail à l'AWT EDT. Il serait agréable de disposer d'un mécanisme similaire pour envoyer des demandes de travail à un thread d'arrière-plan (tel que SwingWorker) mais, d'après ce que j'ai compris, ceux-ci ne disposent d'aucune sorte de mécanisme de mise en file d'attente et de répartition des événements, ce dont dépend invokeLater().
Au lieu de cela, j'ai fini par donner à mon thread d'arrière-plan une file d'attente bloquante, à laquelle d'autres threads envoient des messages, et le thread exécute essentiellement une boucle de réception, bloquant jusqu'à ce qu'un message arrive.
En fait, cela pourrait être exactement la façon dont on implémenterait un comportement de type EDT dans un thread d'arrière-plan (ou pas ?). D'un autre côté, j'aime la simplicité d'un thread qui se balance inerte, traitant les "gouttelettes de travail" lorsqu'elles lui sont envoyées par une file d'attente invisible dans le ciel. Java offre-t-il un moyen de créer un tel "fil de travail piloté par les événements" ? Ou est-ce que la mise en file d'attente des messages est le bon moyen de le faire, après tout ? Dans le même ordre d'idées, y a-t-il des inconvénients à l'utilisation de l'option invokeLater()
la technique du passage de messages ?