Je me demandais quelle serait l'approche la plus efficace pour implémenter une sorte de tâche d'arrière-plan dans java (je suppose que ce serait une sorte de Threads non bloquants). Pour être plus précis - j'ai un code Java et puis à un moment donné j'ai besoin d'exécuter une opération de longue durée. Ce que je voudrais faire est d'exécuter cette opération en arrière-plan afin que le reste du programme puisse continuer à s'exécuter et quand cette tâche est terminée, mettez juste à jour un objet spécifique qui. Ce changement serait alors détecté par d'autres composants.tâche d'arrière-plan java
Répondre
Vous devez utiliser des pools de discussion,
http://java.sun.com/docs/books/tutorial/essential/concurrency/pools.html
idée Naïf: vous pourriez être en mesure de créer fil, lui donner une faible priorité, et faire une boucle de:
- faire un peu de travail
- en utilisant le rendement ou le sommeil pour laisser d'autres fils travailler en parrallèle
Cela dépend de ce que vous voulez vraiment faire dans votre fil
vous voulez faire un nouveau fil; selon la durée de la méthode doit être, vous pouvez le faire en ligne:
// some code
new Thread(new Runnable() {
@Override public void run() {
// do stuff in this thread
}
}).start();
Ou tout simplement faire une nouvelle classe:
public class MyWorker extends Thread {
public void run() {
// do stuff in this thread
}
}
// some code
new MyWorker().start();
Oui, vous allez vouloir faire tourner l'opération au large sur son propre fil. Ajouter de nouveaux sujets peut être un peu dangereux si vous n'êtes pas prudent et conscient de ce que cela signifie et comment les ressources vont interagir. Voici un bon introduction to threads pour vous aider à démarrer.
Faire un fil. Marquez ce fil comme Daemon. La JVM se ferme lorsque le seul thread en cours d'exécution est tous les threads du démon.
- 1. Arrêt d'une tâche java parallèle avec ant
- 2. Incohérence NoClassDefFoundError dans la tâche subant java
- 3. Expiration d'une tâche avec Java SwingWorker
- 4. Sortie de la tâche java dans Ant
- 5. comment faire tâche Timer dans Java
- 6. Java équivalent de fork dans la tâche Java de Ant?
- 7. Exécuteurs Java: attente de la fin de la tâche.
- 8. Comment exécuter une tâche pour une période spécifique en Java.
- 9. Exécutifs Java: comment définir la priorité de la tâche?
- 10. ClassNotFoundException avec la tâche java de ant et classpath
- 11. Java Swing comment créer un rappel de tâche
- 12. comment utiliser htmlparsing et curl en JAVA pour cette tâche ...?
- 13. Bibliothèque Java pour la tâche de masquage du traitement d'image
- 14. junitreport ant tâche donnant java.lang.OutOfMemoryError: Java heap space
- 15. Besoin de deux valeurs Date() pour la tâche Java
- 16. tâche Cron
- 17. tâche Verilog
- 18. Comment coder une tâche râteau pour déclencher une tâche BackgrounDRb?
- 19. jBPM 4.3 Tâche de notification de tâche ignorée
- 20. Céleri - Obtenir l'ID de tâche pour la tâche en cours
- 21. Rapport planifié (tâche) Moniteur
- 22. MSBuild XmlMassUpdate Tâche
- 23. Ant tâche de suppression
- 24. Lua tâche ordonnancement
- 25. MSBuild AspNetcompiler tâche
- 26. Windows tâche automatisée
- 27. Tâche de colonne dérivée
- 28. Tâche longue en Javascript
- 29. tâche planifiée dynamique
- 30. Pom.xml - tâche tar
Ouais, c'est ce que je cherchais, plus précisément les Executors, .. Merci. – markovuksanovic
Pourriez-vous donner une réponse à propos des exécuteurs? J'étais sur le point de poser une question très similaire. Je pense que les exécuteurs devraient être mentionnés comme une réponse spécifique. Je lui donnerais un upvote. Je ne veux pas mettre une réponse à point de voler. D'autant plus que JEE décourage le frai de nouveaux fils. – Wes