J'ai récemment commencé à apprendre et à explorer les bases de la programmation GUI en Java.
Avoir été de programmation pour un moment, j'ai seulement fait backend travail ou un travail et comme un résultat le plus proche que j'ai pris pour des interfaces utilisateur est la console de commande (gênant, je le sais).
Je suis l'aide de Swing et aussi loin que je peux rassembler ce qui signifie, par extension, je suis également à l'aide de AWT.
Ma question est basée sur ce morceau de code:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frame.setVisible(true);
}
} );
J'ai fait des recherches sur ce pendant un certain temps que je voulais bien comprendre cet étrange morceau de code et en sont venus à travers l'expression "Événement de distribution du Fil" à plusieurs reprises. Corrigez-moi si je me trompe, mais ce que je comprends; il a à faire avec l'utilisation de plusieurs threads et comment Java Swing interprète ces threads. Je rassemble ainsi que le code ci-dessus est utilisé pour s'assurer que tous les fils sont "en sécurité" avant qu'il ne crée la fenêtre, d'où le invokeLater?
J'ai lu que:
"Vous ne pouvez appeler les méthodes qui fonctionnent sur le cadre de l'Événement de distribution du Fil"
et uniquement sous certaines circonstances, vous pouvez appeler les méthodes qui fonctionnent sur le cadre de la méthode main.
Quelqu'un peut-il préciser pour moi ce qu'est exactement le Cas de distribution du Thread? Comment il se rapporte à plusieurs threads d'exécution et comment ces fils ne sont pas sûrs d'être appelé à partir de la méthode main? Aussi pourquoi avons-nous besoin de cette invokeLater? Ne pouvons-nous pas simplement créer la fenêtre comme n'importe quel autre objet?
J'ai touché un peu à un bloc de route dans ma recherche car je ne suis pas saisir ces relations et des idées.
Une note de côté, c'est que j'aime à la base de mes connaissances sur la compréhension en profondeur comme je le crois, ce qui conduit au meilleur résultat global et par conséquent, le meilleur des programmes. Si je comprendre en profondeur le fonctionnement de quelque chose, alors vous pouvez utiliser les trucs et astuces efficacement plutôt que de simplement parroting en arrière dans le code, donc merci de ne pas avoir peur de me donner une certaine supplémentaire de la profondeur des explications et élargir mes connaissances.
Je vous remercie.