Interrupt một Thread trong Java
Miêu tả vấn đề
Cách interrupt một thread đang chạy trong Java?
Giải pháp
Ví dụ sau minh họa cách interrupt một thread đang chạy bởi sử dụng phương thức interrupt() của lớp Thread và kiểm tra nếu thread đã được interrupted hay chưa bởi sử dụng phương thức isInterrupted() trong 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"); } }
Kết quả
Code trên sẽ cho kết quả sau:
in run() - about to work2() in main() - interrupting other thread in main() - leaving C isInterrupted()=true in run() - interrupted in work2()
Bài học Bài tập Java phổ biến tại hoconline.club:
thread_trong_java.jsp
Bài viết liên quan