Maison Java javaDidacticiel Comment définir une minuterie pour l'exécution des tâches planifiées quotidiennement en Java ?

Comment définir une minuterie pour l'exécution des tâches planifiées quotidiennement en Java ?

Dec 27, 2023 am 11:10 AM
java 定时器 Exécuté tous les jours

Comment définir une minuterie pour lexécution des tâches planifiées quotidiennement en Java ?

Java timer : Comment définir une tâche d'exécution planifiée chaque jour ?

Dans le développement Java quotidien, nous rencontrons souvent le besoin d'effectuer régulièrement une certaine tâche chaque jour. Par exemple, effectuez une tâche de sauvegarde de données à 1h du matin tous les jours, ou envoyez un email quotidiennement à 20h, etc. Ainsi en Java, nous pouvons utiliser des timers pour réaliser une telle fonction.

Java fournit une variété de méthodes d'implémentation de minuterie.Cet article présentera deux méthodes basées sur Timer et ScheduledExecutorService pour configurer des tâches d'exécution planifiées quotidiennes et fournira des exemples de code spécifiques.

1. Utilisez la classe Timer pour implémenter des tâches planifiées chaque jour

La classe Timer est une classe de minuterie simple fournie par Java, qui peut être utilisée pour effectuer des tâches planifiées. Nous pouvons utiliser la méthode planning de la classe Timer pour configurer l'exécution planifiée des tâches chaque jour et utiliser la classe Date pour spécifier le moment auquel la tâche doit être exécutée.

Ce qui suit est un exemple de code qui utilise la classe Timer pour implémenter des tâches planifiées quotidiennes :

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class DailyTaskWithTimer {
    public static void main(String[] args) {
        Timer timer = new Timer();
        
        // 设置任务执行的时间(每天的定时时间)
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 1); // 设置时
        calendar.set(Calendar.MINUTE, 0);      // 设置分
        calendar.set(Calendar.SECOND, 0);      // 设置秒
        
        // 如果当前时间已经过了设定的定时时间,则将定时时间推迟到明天
        if (calendar.getTime().before(new Date())) {
            calendar.add(Calendar.DAY_OF_MONTH, 1);
        }
        
        // 执行任务
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                // TODO: 需要执行的任务逻辑
            }
        }, calendar.getTime(), 24 * 60 * 60 * 1000); // 24小时执行一次
    }
}
Copier après la connexion

Dans le code ci-dessus, nous définissons l'heure d'exécution de la tâche via la classe Calendar. Il convient de noter que si l'heure actuelle a dépassé l'heure. régler l'heure de chronométrage, l'heure prévue sera reportée à demain. Utilisez ensuite la méthode de planification de Timer pour exécuter la tâche. Le premier paramètre est un objet TimerTask, qui définit la logique de la tâche qui doit être exécutée. Le deuxième paramètre est l'heure de début d'exécution de la tâche et le troisième paramètre est l'intervalle. heure de la tâche. Ici, configuré pour être exécuté toutes les 24 heures.

2. Utilisez ScheduledExecutorService pour mettre en œuvre l'exécution planifiée des tâches chaque jour

ScheduledExecutorService est une minuterie avancée fournie par Java, qui offre un moyen plus flexible et fiable d'exécuter des tâches planifiées. Nous pouvons utiliser la méthode planningAtFixedRate de ScheduledExecutorService pour implémenter l'exécution planifiée des tâches chaque jour.

Ce qui suit est un exemple de code qui utilise ScheduledExecutorService pour implémenter l'exécution planifiée des tâches chaque jour :

import java.util.Calendar;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class DailyTaskWithScheduledExecutor {
    public static void main(String[] args) {
        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
        
        // 设置任务执行的时间(每天的定时时间)
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 1); // 设置时
        calendar.set(Calendar.MINUTE, 0);      // 设置分
        calendar.set(Calendar.SECOND, 0);      // 设置秒
        
        // 如果当前时间已经过了设定的定时时间,则将定时时间推迟到明天
        if (calendar.getTime().before(new Date())) {
            calendar.add(Calendar.DAY_OF_MONTH, 1);
        }
        
        // 执行任务
        executorService.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                // TODO: 需要执行的任务逻辑
            }
        }, calendar.getTimeInMillis() - System.currentTimeMillis(), 24 * 60 * 60 * 1000, TimeUnit.MILLISECONDS); // 24小时执行一次
        
        // 关闭定时器
        //executorService.shutdown();
    }
}
Copier après la connexion

Dans le code ci-dessus, nous définissons l'heure d'exécution de la tâche via la classe Calendar. Il convient de noter que si l'heure actuelle est passée. l'heure de chronométrage réglée, puis reporter l'heure prévue à demain. Utilisez ensuite la méthode planningAtFixedRate de ScheduledExecutorService pour exécuter la tâche. Le premier paramètre est un objet Runnable, qui définit la logique de la tâche qui doit être exécutée. Le deuxième paramètre est le temps de retard initial de la tâche. définir l'heure. La différence par rapport à l'heure actuelle. Le troisième paramètre est l'intervalle d'exécution de la tâche, qui est défini pour être exécuté toutes les 24 heures. Le quatrième paramètre est l'unité de temps, qui est définie en millisecondes. Étant donné que ScheduledExecutorService est un pool de threads, nous devons également fermer manuellement le pool de threads une fois la tâche exécutée.

Résumé :

Cet article présente deux façons de configurer des tâches d'exécution planifiées quotidiennes en Java : en utilisant les classes Timer et ScheduledExecutorService. Les deux méthodes peuvent réaliser la fonction d’exécution de tâches régulièrement chaque jour. Les développeurs peuvent choisir une méthode appropriée pour planifier les tâches planifiées en fonction des besoins réels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles