Le temps de la méthode en java
Dans une classe java, j'ai une méthode qui parfois prend beaucoup de temps pour l'exécution. Peut-être qu'il se bloque dans la méthode des flux. Ce que je veux, c'est si la méthode n'a pas terminé dans les temps spécifique, le programme devrait sortir de cette méthode et de continuer avec le reste de l'écoulement.
S'il vous plaît laissez-moi savoir est-il de toute façon de gérer cette situation.
OriginalL'auteur Ran | 2012-01-24
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser les threads pour atteindre cet objectif. Les Threads ne sont pas nuisibles 🙂 Exemple ci-dessous exécuter un morceau de code pendant 10 secondes, puis se termine.
OriginalL'auteur Muhammad Imran Tariq
Exécuter la méthode dans un thread différent, vous pouvez mettre fin à un fil à tout moment.
ne voulez pas utiliser les Threads Pourquoi? Si vous n'êtes pas familier, avoir un regard sur le java tutoriel
Salut Xavier, le problème avec les threads, c'est que nous ne sommes pas sûr à propos de l'exécution de fil débit si nous avons plusieurs threads en cours d'exécution pour la même portion de code qui semble être un peu complexe à gérer ou de débogage.
Jetez un oeil à
java.util.concurrent.*
surtoutFutureTask
,Callable
etExecutors
. Voir ce fil de réponse pour un exemple: StackOverflow Question 240320.les threads en cours d'exécution pour la même portion de code ?? BTW, regardez le tutoriel, j'ai fait un lien dans le commentaire précédent.
OriginalL'auteur COD3BOY
Basé sur la ci-dessus snipplet, j'ai essayé de créer une glorifié printemps bean.
Tels exécuteur exécute le passé limitedRuntimeTask limitée runtimeInMs.
Si la tâche est terminée à l'intérieur de ses limites, l'appelant se poursuit normalement dans l'exécution.
Si le limitedRuntimeTask ne parvient pas à terminer dans la runtimeInMs,
l'appelant recevra l'exécution du thread en arrière. Si un timeBreachedTask a été défini,
il sera exécuté avant de retourner à l'appelant.
}
OriginalL'auteur Abax
Je sens l'approche acceptée réponse est un peu dépassé. Avec Java8, il peut être fait beaucoup plus simple.
Dire, vous avez une méthode
alors vous pouvez le faire (continuer à lire, c'est juste pour montrer l'approche):
bien sûr, jetant Exception est mauvais, ici est la bonne version étendue avec une bonne erreur de traitement, mais je vous suggère d'examiner attentivement, vous voulez faire certaines choses différemment (enregistrement, de retour de délai d'attente dans de longues résultat, etc.):
OriginalL'auteur Alex Pakka