Java / Java Multithreading
Interrupts
indicates that the object has to stop doing what it does by calling interrupt() on the thread object.
When it receives an interrupt, it returns from the run() method .
package com.tutorials.threading; public class HandleInterruptedException { public static void main(String[] args) { String changeColors[] = { "BLUE", "YELLOW", "ORANGE", "WHITE", "BLACK" }; for (int i = 0; i < changeColors.length; i++) { // Pause for 5 seconds try { Thread.sleep(2000); if (i == 1) Thread.currentThread().interrupt(); } catch (InterruptedException e) { System.out.println("Interrupted . lets skip the color." + e); continue; } // Print color System.out.println(changeColors[i]); } } }
Output:
YELLOW
Interrupted. lets skip the color.java.lang.InterruptedException: sleep interrupted
WHITE
BLACK
When it iterates through colors array and at index 1,(YELLOW) the interrupt() is called on the executing thread (which becomes active after sleep), when it iterates through index 2, (ORANGE) sleep does not run because it is interrupted so it skips printing ORANGE.
More Related questions...