Maison >Java >javaDidacticiel >Introduction détaillée à l'exemple de code de tâche planifiée taskScheduler au printemps

Introduction détaillée à l'exemple de code de tâche planifiée taskScheduler au printemps

黄舟
黄舟original
2017-03-06 10:32:462166parcourir

Cet article présente principalement les informations pertinentes sur la tâche planifiée taskScheduler au printemps. L'article le présente en détail à travers un exemple de code. Je pense qu'il a une certaine valeur de référence pour que tous les amis dans le besoin puissent y jeter un œil ci-dessous.

Avant-propos

Comme nous le savons tous, après la version printanière 3.0, il est livré avec un outil de tâches planifiées, et il est simple et pratique à utiliser, sans avoir besoin de fichiers de configuration. Changez dynamiquement l’état d’exécution. Vous pouvez également utiliser des expressions cron pour configurer des tâches planifiées.

La classe exécutée doit implémenter l'interface Runnable

Interface TaskScheduler

TaskScheduler C'est une interface. L'interface TaskScheduler définit 6 méthodes


1, schedule(Runnable task, Trigger trigger);

pour spécifier une tâche de timing d'exécution de déclencheur. . Vous pouvez utiliser CronTrigger pour spécifier des expressions Cron pour exécuter des tâches planifiées

 CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?");
 taskScheduler.schedule(this, t);

schedule(Runnable task, Date startTime);

Spécifiez un spécifique. Exécutez des tâches planifiées à un moment donné et vous pouvez spécifier dynamiquement l'heure de démarrage de la tâche. Exécuté une seule fois. (Beaucoup plus facile à utiliser que Timer. J'aurais aimé découvrir cette interface plus tôt...)

3 scheduleAtFixedRate(Runnable task, long period);

Exécuter immédiatement, cycler la tâche, spécifier un cycle d'exécution (synchronisation en millisecondes)

PS : Que le cycle précédent soit terminé ou non, le cycle suivant commencera l'exécution lorsque le le temps est écoulé

4. scheduleAtFixedRate(Runnable task, Date startTime, long period);

Spécifiez l'heure de début de l'exécution, faites défiler la tâche, spécifiez une période d'intervalle (minuterie en millisecondes)

PS ; Tâche, spécifiez une période d'intervalle (synchronisation en millisecondes)

PS : scheduleWithFixedDelay(Runnable task, long delay);
Après le cycle précédent exécuté, attendez le temps de retard et le cycle suivant commencera à s'exécuter


6

Spécifiez l'heure de début de l'exécution de la tâche et spécifiez une. intervalle (synchronisation en millisecondes)

PS :scheduleWithFixedDelay(Runnable task, Date startTime, long delay);
Une fois l'exécution du cycle précédent terminée, attendez le temps de retard et démarrez l'exécution du cycle suivant


Il existe cinq classes d'implémentation sous TaskScheduler

1. tâches dans le fil de discussion actuel. Si la tâche est simple, vous pouvez utiliser cette classe pour l’exécuter directement. Rapide et pratique.

PS :
Il s'agit d'une exécution à un seul fil



2 , DefaultManagedTaskScheduler

exécute les tâches dans le thread actuel. Il s'agit d'une sous-classe de ConcurrentTaskScheduler et ajoute la prise en charge JNDI. La même utilisation que ConcurrentTaskScheduler, vous devez utiliser JNDI pour le définir séparément

3 ThreadPoolTaskScheduler

public class LocTest implements Runnable {
 private ConcurrentTaskScheduler tpts = new ConcurrentTaskScheduler();
 private void start() {
tpts.schedule(this, new Date());
 }
 public void run() {
Thread ct = Thread.currentThread();
System.out.println("current id:"+ct.getId());
System.out.println("current name:"+ct.getName());
 }
 public static void main(String[] args) {
new LocTest().start();
 }
}
La classe d'implémentation par défaut de l'interface TaskScheduler, tâche planifiée multithread. exécution. Vous pouvez définir le nombre de pools de threads d'exécution (la valeur par défaut est un thread).


PS :



Doit être appelé avant utilisation

[Méthode d'initialisation]

a une méthode , vous pouvez fermer le fil après exécution

  1. initialize()

  2. 4. TimerManagerTaskScheduler
  3. Ceci n'est pas utilisé, donc je ne le connais pas en détail, je l'ajouterai quand j'aurai le temps. Quiconque en sait plus est invité à ajouter. shutDown()

Résumé

public class LocTest implements Runnable {
private ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
private void start() {
taskScheduler.setPoolSize(10);
//必须得先初始化,才能使用
taskScheduler.initialize();
taskScheduler.schedule(this, new Date());
}
public void run() {
Thread ct = Thread.currentThread();
System.out.println("current id:"+ct.getId());
System.out.println("current name:"+ct.getName());
}
public static void main(String[] args) {
new LocTest().start();
}
}

Ce qui précède est une introduction détaillée à l'exemple de code du programme planifié task taskScheduler au printemps Contenu, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn