Interrupt a
Thread
public class GeneralInterrupt extends Object
implements Runnable
{
public void run()
{
try
{
System.out.println("in run() - about to work2()");
work2();
System.out.println("in run() -back from work2()");
}
catch (InterruptedException x)
{
System.out.println("in run() -
interrupted in work2()");
return;
}
System.out.println("in run() - doing stuff after nap");
System.out.println("in run() - leaving normally");
}
public void work2() throws InterruptedException
{
while (true)
{
if (Thread.currentThread().isInterrupted())
{
System.out.println("C isInterrupted()="
+ Thread.currentThread().isInterrupted());
Thread.sleep(2000);
System.out.println("D isInterrupted()="
+ Thread.currentThread().isInterrupted());
}
}
}
public void work() throws InterruptedException
{
while (true)
{
for (int i = 0; i < 100000; i++)
{
int j = i * 2;
}
System.out.println("A isInterrupted()="
+ Thread.currentThread().isInterrupted());
if (Thread.interrupted())
{
System.out.println("B isInterrupted()="
+ Thread.currentThread().isInterrupted());
throw new InterruptedException();
}
}
}
public static void main(String[] args)
{
GeneralInterrupt si = new GeneralInterrupt();
Thread t = new Thread(si);
t.start();
try
{
Thread.sleep(2000);
}
catch (InterruptedException x) {}
System.out.println("in main() -
interrupting other thread");
t.interrupt();
System.out.println("in main() - leaving");
}
}
No comments:
Post a Comment