recherche
MaisonJavajavaDidacticielComment puis-je implémenter un mécanisme de délai d'attente pour les tâches en Java à l'aide de Timers et d'ExecutorService ?

How Can I Implement a Timeout Mechanism for Tasks in Java using Timers and ExecutorService?

Définition d'une minuterie en Java

Cette question portait initialement sur la configuration d'une minuterie pour tenter une connexion à une base de données et lever une exception en cas de problème de connexion surgir. La question clarifiée va plus loin en demandant à un minuteur d'exécuter une tâche pendant une période de temps spécifiée, en lançant une exception si la tâche dépasse cette durée.

Définition d'une minuterie

Pour définir une minuterie, créez un objet java.util.Timer :

Timer timer = new Timer();

Pour exécuter la tâche une fois, planifiez-la en utilisant Timer.schedule() :

timer.schedule(new TimerTask() {
    @Override
    public void run() {
        // Database code here
    }
}, 2*60*1000); // 2 minutes in milliseconds

Pour répéter la tâche à l'intervalle spécifié, utilisez Timer.scheduleAtFixedRate() :

timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        // Database code here
    }
}, 2*60*1000, 2*60*1000);

Mécanisme de délai d'attente

Pour définir un délai d'expiration pour une tâche, utilisez un ExecutorService :

ExecutorService service = Executors.newSingleThreadExecutor();

try {
    Runnable r = new Runnable() {
        @Override
        public void run() {
            // Database task
        }
    };

    Future> f = service.submit(r);

    f.get(2, TimeUnit.MINUTES); // attempt the task for 2 minutes
}
catch (InterruptedException e) {
    // Thread interrupted during sleep, wait, or join
}
catch (TimeoutException e) {
    // Took too long!
}
catch (ExecutionException e) {
    // Exception within the Runnable task
}
finally {
    service.shutdown();
}

Ce code s'exécutera normalement si la tâche se termine dans les 2 minutes. Sinon, une TimeoutException sera levée et le thread continuera à s'exécuter jusqu'à ce qu'il rencontre une exception dans la base de données ou la connexion réseau.

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
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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

SublimeText3 version Mac

SublimeText3 version Mac

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

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.