J'ai besoin de planifier une tâche à exécuter à intervalle de temps fixe. Comment est-ce que je peux faire ceci avec le soutien de longs intervalles (par exemple sur chaque 8 heures)? J'utilise actuellement java.util.Timer.scheduleAtFixedRate
. Est-ce que java.util.Timer.scheduleAtFixedRate
prend en charge des intervalles de temps longs?Comment planifier une tâche périodique en Java?
Répondre
Utilisez un ScheduledExecutorService:
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(yourRunnable, 8, 8, TimeUnit.HOURS);
Vous devriez jeter un oeil à Quartz il est un framework java Wich fonctionne avec les éditions EE et SE et permet de définir des emplois pour exécuter un temps spécifique
Si vous voulez coller avec java.util.Timer
, vous pouvez l'utiliser pour planifier à des intervalles de temps importants. Vous passez simplement dans la période que vous photographiez. Consultez la documentation here.
Essayez de cette façon ->
créer d'abord un TimeTask de classe qui exécuter votre tâche, il ressemble à:
public class CustomTask extends TimerTask {
public CustomTask(){
//Constructor
}
public void run() {
try {
// Your task process
} catch (Exception ex) {
System.out.println("error running thread " + ex.getMessage());
}
}
puis dans la classe principale, vous instancier la tâche et l'exécuter périodiquement démarré à une date spécifiée:
public void runTask(){
Calendar calendar = Calendar.getInstance();
calendar.set(
Calendar.DAY_OF_WEEK,
Calendar.MONDAY
);
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 40);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Timer time = new Timer(); // Instantiate Timer Object
// Start running the task on Monday at 15:40:00, period is set to 8 hours
// if you want to run the task immediately, set the 2nd parameter to 0
time.schedule(new CustomTask(), calendar.getTime(), TimeUnit.HOURS.toMillis(8));
}
Utilisez Google Goyave AbstractScheduledService
comme ci-dessous:
public class ScheduledExecutor extends AbstractScheduledService
{
@Override
protected void runOneIteration() throws Exception
{
System.out.println("Executing....");
}
@Override
protected Scheduler scheduler()
{
return Scheduler.newFixedRateSchedule(0, 3, TimeUnit.SECONDS);
}
@Override
protected void startUp()
{
System.out.println("StartUp Activity....");
}
@Override
protected void shutDown()
{
System.out.println("Shutdown Activity...");
}
public static void main(String[] args) throws InterruptedException
{
ScheduledExecutor se = new ScheduledExecutor();
se.startAsync();
Thread.sleep(15000);
se.stopAsync();
}
}
Si vous avez plus de services comme celui-ci, l'enregistrement, alors tous les services ServiceManager sera bon que tous les services peuvent démarrer et arrêter ensemble . Lisez here pour plus d'informations sur ServiceManager.
Guava est maintenant sur GitHub. Voici un lien vers la nouvelle documentation [ServiceManager] (https://github.com/google/guava/wiki/ServiceExplained). – Renato
Si votre application utilise déjà framework Spring, vous avez Scheduling construit en
J'utilise la fonction de Spring Framework. (spring-context dépendance jar ou maven).
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTaskRunner {
@Autowired
@Qualifier("TempFilesCleanerExecution")
private ScheduledTask tempDataCleanerExecution;
@Scheduled(fixedDelay = TempFilesCleanerExecution.INTERVAL_TO_RUN_TMP_CLEAN_MS /* 1000 */)
public void performCleanTempData() {
tempDataCleanerExecution.execute();
}
}
TâchePlanifiée est ma propre interface avec ma méthode personnalisée execute, que j'appelle comme ma tâche planifiée.
- 1. Comment créer une tâche périodique
- 2. Comment planifier une tâche en C++
- 3. Comment planifier une tâche JBoss?
- 4. planifier tâche administrateur alfresco
- 5. Comment planifier une tâche dans Tomcat
- 6. Comment planifier une tâche personnalisée via C#
- 7. applications facebook: planifier une tâche
- 8. Pour planifier la tâche
- 9. Forcer l'exécution régulière de la tâche périodique dans l'application Java
- 10. Planifier une tâche PHP s'exécutant dans IIS
- 11. Meilleur cours pour planifier une tâche
- 12. comment planifier une tâche à un moment précis?
- 13. Comment personnaliser une tâche périodique sur Windows Phone?
- 14. Comment l'événement GeoCoordinateWatcher.PositionChaged fonctionne-t-il dans une tâche périodique?
- 15. Android: Obtenir l'heure du système et planifier une tâche
- 16. Comment planifier une tâche 1 semaine après l'inscription
- 17. Comment planifier une boucle dans Java
- 18. WP7 Tâche périodique - Que puis-je faire
- 19. celerybeat désactive automatiquement la tâche périodique
- 20. La tâche périodique planifiée se bloque à la seconde TextView.setText()
- 21. java timer - comment planifier une tâche à un moment donné dans le futur
- 22. Surveillance d'une tâche périodique dans Rails
- 23. Action périodique d'animation Java
- 24. Comment planifier une requête MySQL?
- 25. Comment planifier une tâche en 1 heure à l'aide de l'invite
- 26. Je souhaite planifier une tâche pour exécuter un fichier de commandes sur une base hebdomadaire en utilisant le code Java
- 27. Rappel lorsqu'une tâche périodique est annulée et terminée
- 28. Comment exécuter une tâche pour une période spécifique en Java.
- 29. planifier tâche dans Windows 2008 serveur pour le fichier php
- 30. comment planifier une tâche, afficher une alerte et accéder à l'écran d'accueil du téléphone?
Pour rendre le code plus lisible, vous pouvez modifier l'argument final dans votre appel de l'heure à TimeUnit.HOURS.toMillis (8) – darrenmc