How
to know whether a thread is interrupted or not
Thread
API provides a method called, isInterrupted(), which returns true if
the thread is interrupted, otherwise returns false.
Syntax
public boolean
isInterrupted()
Tests
whether this thread has been interrupted. The interrupted status of
the thread is unaffected by this method. Returns true if the thread
is interrupted otherwise return false.
Example
class MyThread implements Runnable{ public void run(){ try{ Thread.currentThread().sleep(5000); } catch(Exception e){ try{ Thread.currentThread().sleep(5000); System.out.println("Somebody interrupted me"); } catch(InterruptedException e1){ } } } public static void main(String args[]){ MyThread task1 = new MyThread(); Thread t1 = new Thread(task1); t1.start(); t1.interrupt(); System.out.println("Is thread1 interrupted " + t1.isInterrupted()); } }
Output
Is thread1 interrupted true
Somebody interrupted me
Notable
points
1.
A thread interruption ignored, if a thread was not alive at the time
of the interrupt called
i.e.,
if the thread finishes its execution, and you call the interrupted()
after thread finishes its execution, it will returns false.
Example
class MyThread implements Runnable{ public void run(){ try{ Thread.currentThread().sleep(2000); } catch(Exception e){ System.out.println("Somebody interrupted me"); } } public static void main(String args[]){ MyThread task1 = new MyThread(); Thread t1 = new Thread(task1); t1.start(); t1.interrupt(); try{ Thread.currentThread().sleep(2000); } catch(Exception e){ } System.out.println("Is thread1 interrupted " + t1.isInterrupted()); } }
Output
Somebody interrupted me
Is thread1 interrupted false
2.
If a thread is interrupted before it started, then nothing will
happen, so isInterrupted() also return false
class MyThread implements Runnable{ public void run(){ try{ Thread.currentThread().sleep(2000); } catch(Exception e){ System.out.println("Somebody interrupted me"); } } public static void main(String args[]){ MyThread task1 = new MyThread(); Thread t1 = new Thread(task1); t1.interrupt(); System.out.println("Is thread1 interrupted " + t1.isInterrupted()); t1.start(); System.out.println("Is thread1 interrupted " + t1.isInterrupted()); } }
Output
Is thread1 interrupted false Is thread1 interrupted false
No comments:
Post a Comment