Java示例中断线程


Java示例中断线程

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");

   }

}