Maison > Java > javaDidacticiel > le corps du texte

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

黄舟
Libérer: 2017-03-06 10:32:46
original
2135 Les gens l'ont consulté

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);
Copier après la connexion

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();
 }
}
Copier après la connexion
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();
}
}
Copier après la connexion

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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal