Ok, commençons par le début. Je ne sais pas ce que vous faites et comment, mais lorsque vous faites avec le réseau, vous devez essayer le modèle REACTOR .
Fondamentalement, le réacteur est un moyen d'éviter l'utilisation de fils ou de le différer lorsqu'une tâche filetée est plus découplée par le cœur.
Le centre du réacteur est la fonction de sélection : vous enregistrez vos sources d'événements et demandez à la sélection de revenir lorsque quelque chose arrive à l'une de ces sources .
Lorsque quelque chose s'ajoute, la boucle principale du réacteur trouve simplement ce qui s'est ajouté à quelle source réagissant en créant un événement et envoie cet événement aux objets intéressés par ce type d'événements.
Je ne suis pas un gourou de Java mais je sais que vous pouvez configurer un socket (même ceux UDP) et vous pouvez les définir comme non bloquants. Parallèlement à cela, je sais qu'il existe une classe appelée Selector dans un package appelé NIO. Ces éléments concordent pour définir une installation d'E / S multiplexée et non bloquante
Tout ce dont vous avez besoin est simplement de configurer deux canaux UDP: un pour l'écoute du serveur et l'autre pour la conversation du serveur; enregistrer l'écoute du réacteur et intégrer l'étape de réaction du réacteur dans votre boucle principale.
Tenez compte du fait que ce type d'approche vous permet de vous connecter simultanément à différents canaux afin d'envisager de développer un jeu peer-to-peer (pas de goulot d'étranglement de serveur et de conception distribuée ... ça sonne bien!)
PS
Veuillez noter que si vous utilisez une sorte de prise / installation de GUI, vous utilisez probablement déjà un réacteur ...