Je dois appeler un module de fonction tiers sur un nouveau thread. D'après ce que j'ai vu, l'appel se termine rapidement si tout s'est bien passé ou il se bloque à jamais pour enfermer le fil. Quelle est une bonne façon de démarrer le thread et faire l'appel et attendre quelques secondes et si le thread est toujours en vie, puis en supposant qu'il est verrouillé, tuer (ou arrêter ou abandonner) le fil sans utiliser de méthodes obsolètes.Meilleure façon d'identifier et d'éliminer le thread verrouillé dans Java
J'ai quelque chose comme ça pour l'instant, mais je ne suis pas sûr que ce soit la meilleure façon de le faire et je veux éviter d'appeler Thread.stop() comme c'est obsolète. Merci.
private void foo() throws Exception
{
Runnable runnable = new Runnable()
{
@Override
public void run()
{
// stuff that could potentially lock up the thread.
}
};
Thread thread;
thread = new Thread(runnable);
thread.start();
thread.join(3500);
if (thread.isAlive())
{
thread.stop();
throw new Exception();
}
}
Donc, fondamentalement, vous voulez lancer un thread, puis l'arrêter s'il est encore en vie après une certaine période de temps? –
@matt_b oui, exactement! –