Je veux pouvoir utiliser J'ai lu dans le docteur Java: P>
swingworker code> Sous-classe plusieurs fois. Est-ce possible? p>
swingworker code> est uniquement conçu pour être exécuté une fois. Exécuter un
swingworker code> plus d'une fois n'entraînera pas une fois l'appel de la méthode code> DOINbackground code> deux fois. p>
blockQuote>
4 Réponses :
Une instance d'une classe implémentée SwingWorker ne peut en effet pas courir une seule fois. Il n'y a aucune limite d'instanciation autant d'instances que vous avez besoin et de les exécuter. P>
Il y a une limitation, le fait que plusieurs objets doivent être des déchets collectés en faisant cela en fait une limitation. Pour les petites applications, cela peut ne pas avoir d'importance, mais pour des applications extrêmement importantes qui sont obligées de minimiser le nombre de choses qui obtiennent des déchets recueillies pour des raisons de performance, c'est une limitation. Dire, tout droit, qu'il n'y a pas de limitations n'est pas correcte ... Juste parce que cela ne s'applique pas à tout le monde ne le fait pas.
Avez-vous lu la limite-tihon de la classe? Cela ne fonctionnera pas si une instance est exécutée plus d'une fois. Il n'y a pas d'alternative. Et si la mémoire est une limitation la plus probablement Java n'est pas la bonne solution. Donc, si Java est utilisé et qu'il y a suffisamment de mémoire, il n'y a pas de limitations. Pour des applications plus grandes qui sont aussi un problème. Ils doivent être conçus pour une collecte partielle des ordures. Les cas extrêmes peuvent avoir besoin de quelque chose comme un perturbateur, mais il n'y a aucun sens à avoir une interface utilisateur intégrée
Umm ... Il y a une alternative. Avoir une seule instance d'un fichier exécutable, et un exécuté code>. Même dans la documentation code> swingworker code>, il est indiqué que c'est une classe de commodité. Il y a facilement d'autres alternatives.
swingworker code> n'est approprié que lorsque vous pouvez renoncer à certaines choses pour les autres.
Si, après avoir mesurer la performance, plusieurs instances de swingworker code> se trouvent être un goulot d'étranglement, alors, ouais, optimisez-le. Pour un code régulier, il convient de servir de manière standard de diffusion de tâches d'interface utilisateur afin d'autres programmeurs ou même l'auteur elle-même pourrait la comprendre plus tard. À mon avis, d'autres choses vont probablement causer des problèmes avant
swingworker code>.
Vous ne pouvez pas instancier autant d'instances dont vous avez besoin et les exécuter. Dans la classe SwingWorker existe javax.swing.swingworker. max_worker_threads strong> = 10. Pour que vous puissiez exécuter un maximum de 10 instances. Une instance est libérée que celle-ci consacre 10 minutes de temps d'inactivité. N'utilisez pas d'instance SwingWorker comme instance de thread; ce n'est pas un fil. P>
Avez-vous venu de dire: "NE PAS"?
Essayez de faire ceci:
private void startTask() {// main method that creates the background task or class that implements the SwingWorker AppContext appContext = AppContext.getAppContext(); if(appContext!=null){ appContext.remove(SwingWorker.class); } MassiveMigrationTask task = new MassiveMigrationTask();// class that implements the SwingWorker task.execute();// this process implicitly adds the SwingWorker.class to the appContext }
Vous pouvez simplement appeler à nouveau votre travailleur battant de considération C'est simplement simple HASHMAP J'utilise pour transmettre les données d'entrées à mon ouvrier battant, donc pour le revenir, je viens de passer les mêmes intrants à la nouvelle instance de travailleur oscillant p> p> effectué () code> méthode (dépend de la manière dont votre code desséché)
setData () code> et
getdata () code> p>
Voulez-vous dire que vous souhaitez réutiliser votre classe de mise en œuvre SwingWorker, ou une instance de la classe?
Je ne sais peut-être que j'ai eu quelque chose de mal, mais quand je crée des instances de travailleurs et appelle exécuté () Méthode, rien n'est exécuté. Cependant, lorsque j'ai essayé d'appeler la méthode Doinbackground (), les travailleurs exécutés