


Comment résoudre l'exception d'erreur de délai d'attente d'interruption du thread Java (ThreadInterruptedTimeoutErrorExceotion)
Comment résoudre l'exception d'erreur de délai d'attente d'interruption du thread Java (ThreadInterruptedTimeoutErrorException)
Dans le processus de développement Java, nous utilisons souvent le multithreading pour améliorer les performances de concurrence et l'efficacité du programme. Cependant, lors de l'utilisation de threads, nous pouvons rencontrer certains problèmes, tels qu'une exception d'erreur de délai d'expiration du thread (ThreadInterruptedTimeoutErrorException). Cet article décrira comment résoudre ce problème et donnera des exemples de code correspondants.
- Analyse des causes d'exception
La raison de l'exception d'erreur de délai d'attente du thread est généralement due au fait que le thread attend plus qu'un certain délai d'attente défini lorsqu'il attend le résultat d'une opération. En Java, on peut utiliser la méthode interruption() fournie par la classe Thread pour interrompre l'exécution d'un thread. Lorsque nous appelons cette méthode, le thread reçoit un signal d'interruption et a la possibilité d'effectuer un nettoyage et de terminer le thread. - Solution
Afin de résoudre l'exception d'erreur de délai d'attente du thread, nous pouvons utiliser la méthode suivante :
2.1 Utilisez la méthode join()
En Java, nous pouvons utiliser la méthode join() fournie par la classe Thread pour attendre pour la fin d'un fil. Cette méthode suspend le thread en cours jusqu'à ce que le thread sur lequel la méthode join() est appelée se termine ou expire. Nous pouvons définir un délai d'attente lors de l'appel de la méthode join(). Si le thread ne se termine pas dans le délai d'attente, on peut considérer qu'une exception d'erreur de délai d'attente du thread s'est produite. Voici un exemple de code simple :
Thread thread = new Thread(() -> { // 执行一些耗时的操作 }); thread.start(); thread.join(1000); // 设置超时时间为1秒 if (thread.isAlive()) { // 线程超时错误处理逻辑 thread.interrupt(); // 中断线程 }
2.2 Utilisation des méthodes wait() et notify()
Une autre solution consiste à utiliser les méthodes wait() et notify() pour implémenter l'attente et le réveil des threads. Nous pouvons utiliser la méthode wait() dans le thread en attente pour définir un délai d'attente. Pendant l'attente, nous pouvons effectuer certaines opérations dans un autre thread. Lorsque l'opération est terminée, utilisez la méthode notify() pour notifier le thread en attente. Voici un exemple de code :
Object lock = new Object(); boolean isOperationComplete = false; Thread waitingThread = new Thread(() -> { synchronized (lock) { try { lock.wait(1000); // 设置超时时间为1秒 } catch (InterruptedException e) { e.printStackTrace(); } if (!isOperationComplete) { // 线程超时错误处理逻辑 } } }); Thread executingThread = new Thread(() -> { // 执行一些操作 synchronized (lock) { isOperationComplete = true; lock.notify(); } }); waitingThread.start(); executingThread.start();
2.3 Utilisation d'ExecutorService et Future
ExecutorService et Future en Java sont des classes d'outils utilisées pour gérer et contrôler les threads. Nous pouvons utiliser ExecutorService pour soumettre une tâche avec un délai d'attente et utiliser la méthode get() de Future pour obtenir les résultats de la tâche. Si la tâche n'est pas terminée dans le délai d'expiration, on peut considérer qu'une exception d'erreur de délai d'attente du thread s'est produite. . Voici un exemple de code :
ExecutorService executorService = Executors.newFixedThreadPool(1); Future<?> future = executorService.submit(() -> { // 执行一些耗时的操作 }); try { future.get(1, TimeUnit.SECONDS); // 设置超时时间为1秒 } catch (InterruptedException | ExecutionException | TimeoutException e) { // 线程超时错误处理逻辑 future.cancel(true); // 取消任务 } executorService.shutdown();
- Résumé
L'exception d'erreur de délai d'expiration du thread est l'un des problèmes courants lors de l'utilisation du multi-threading. Cet article décrit plusieurs solutions de contournement et fournit des exemples de code correspondants. En utilisant la méthode join(), les méthodes wait() et notify() ainsi que ExecutorService et Future, nous pouvons résoudre efficacement l'exception d'erreur de délai d'attente du thread et améliorer la stabilité et la fiabilité du programme.
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Dreamweaver CS6
Outils de développement Web visuel

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

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

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel