Dans le scénario décrit, une application Java rencontre des problèmes de performances et un comportement anormal après avoir incorporé la bibliothèque OSXAdapter pour gérer les fichiers. supprimer des événements sur macOS. Le problème provient probablement du blocage du thread de répartition d'événements (EDT) lors de l'exécution de tâches fastidieuses.
Pour résoudre ce problème, l'application doit être modifiée pour effectuer ces tâches sur un thread distinct lors de la mise à jour du modèle sur l'EDT. . SwingWorker, avec sa méthode process(), propose un mécanisme adapté pour cela. Alternativement, invoqueLater() peut être utilisé comme illustré dans le code fourni.
Approche incorrecte :
Approche recommandée :
public class Controller extends SwingWorker{ public Controller() { execute(); // Starts the SwingWorker thread } @Override // Perform the time-consuming tasks (i.e., adding rows to the table) in a background thread. protected Void doInBackground() { // .... return null; } @Override // Update the GUI on the EDT after the background task is complete. protected void done() { // .... } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!