Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào một luồng có thể làm gián đoạn một luồng khác trong Java?

Trong Java, bạn có thể sử dụng hàm 'ngắt' để làm gián đoạn việc thực thi một tiểu trình với sự trợ giúp của ngoại lệ InterruptException.

Ví dụ dưới đây cho thấy cách chuỗi đang thực thi ngừng thực thi (do một ngoại lệ mới được đưa ra trong khối bắt) sau khi nó bị gián đoạn -

Ví dụ

public class Demo extends Thread
{
   public void run()
   {
      try
      {
         Thread.sleep(150);
         System.out.println("In the 'run' function inside try block");
      }
      catch (InterruptedException e)
      {
         throw new RuntimeException("The thread has been interrupted");
      }
   }
   public static void main(String args[])
   {
      Demo my_inst = new Demo();
      System.out.println("An instance of the Demo class has been created");
      my_inst.start();
      try
      {
         my_inst.interrupt();
      }
      catch (Exception e)
      {
         System.out.println("The exception has been handled");
      }
   }
}

Đầu ra

An instance of the Demo class has been created
Exception in thread "Thread-0" java.lang.RuntimeException: The thread has been interrupted
at Demo.run(Demo.java:12)

Một lớp có tên Demo mở rộng lớp Thread. Ở đây, bên trong khối ‘try’, một hàm có tên là ‘run’ được xác định để làm cho hàm ở chế độ ngủ trong 150 mili giây. Trong khối 'catch', thông báo có liên quan và iscaught ngoại lệ được hiển thị trên bảng điều khiển.

Trong chức năng chính, một phiên bản của lớp Demo được tạo và luồng được bắt đầu bằng cách sử dụng chức năng ‘start ’. Bên trong khối "try", phiên bản bị gián đoạn và trong khối "catch", thông tin liên quan cho biết ngoại lệ được in.