2010-05-10 5 views
5

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

2
+1

Ouais, c'est ce que je cherchais, plus précisément les Executors, .. Merci. – markovuksanovic

+0

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

-1

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

6

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(); 
+0

Ne serait-il pas possible ici que le thread de longue durée vole le CPU et ne laisse pas les autres threads s'exécuter? – phtrivier

+0

La création de nouveaux threads est déconseillée dans JEE. – Wes

-1

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.

0

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.