interrupt() met le flag isInterrupted() du thread à true et interrompt immédiatement toute opération bloquante, typiquement de type IO, réseau ou sleep le supportant (typiquement, toutes les méthodes lancant un interruptedException).
Runnable est juste une interface contenant une méthode run. Thread est une classe permettant la création d'un thread et qui, lors du démarrage de ce thread, lance la méthode run d'un Runnable qui lui a été passé ou de lui même.quelle est la dif entre Thread et Runnable
Alors pourquoi tu va t'emmerder avec un executorService au lieu de faire une simple boucle sur toutes tes tâches?Les tâches ne sont pas lancées en parallèle, c'est important comme notion, si c'était le cas, tout échouerait.
Ben tu met tes tests où tu veux hein Par contre si tu ne veux pas arrêter au milieu d'un fetch -> tu oublie le interrupt(), car typiquement il pourrais interrompre un IO réseau à l'intérrieur de JDBC! Tu met juste une méthode type isTooLate() dans le parent qui va te renvoyer true ou false suivant l'heure ^^ . Méthode que tu appelle sagement entre chaque opération courte. Bien sur, ça veux dire qu'en cas d'interruption réseau prolongée, de lock de la DB, etc, ta tâche pourrais dépasser les 2h juste parce qu'elle attends 30 minutes une réponde de la DBJe voudrais que l'opération ne puisse pas être interrompue au milieu d'un fetch mais seulement avant ou après celui-ci.
Faire un nouveau, mais le executor c'est pour du paralléllisme qu'on utilise ça. Si t'as pas de parallélisme -> tu oublie, ça sert à rien d'en mettre pour le plaisir d'en mettre. T'as typiquement un batch d'opération qui doit s'interrompre à un moment. Ben tu met tout ça en série dans une boucle avec un check régulire sur l'heure ^^Dernière question, une fois qu'on a fait un shutdown sur l'Executor, est-il possible de le redémarrer ou il faut en instancier un tout beau tout neuf ?
Partager