Si une activité est en train d'exécuter une méthode qui a été déclarée comme pouvant lancer une InterruptedException (par exemple sleep()), interupt() lancera cette exception.
Pour certaines implémentations, le yield est nécessaire pour assurer que l'activité principale soit activée.
transparent
// Main.java import java.util.Random; class Main { public static void main(String[] args) { Thread t = new Activite(); t.start(); Random rand = new Random(); int p = Math.abs(rand.nextInt()%5000); System.out.println("Réveil dans " + p + "ms"); try { Thread.sleep(p); } catch (InterruptedException e) {}; System.out.println("Réveil..."); t.interrupt(); } }
// Activite.java class Activite extends Thread { public void run() { while(!isInterrupted()){ yield(); } // interrupted() reset le flag System.out.println("tâche interrrompue"); } } }
class Activite extends Thread { public void run() { try { sleep(100000); } catch (InterruptedException e) { System.out.println("Réveillé"); } } } }