interrupt 메서드
스레드의 sleep 메서드나 Join 메서드를 호출할 때 특정 스레드를 대기 상태로 만들 수 있습니다. 현재 스레드의 Interrupt() 메서드를 호출하면 차단 상태가 중단될 수 있습니다. 인터럽트 방법은 스레드가 끝나도록 하지 않습니다.
public void interrupt();// 中断线程的阻塞状态
이 메서드는 InterruptedException
Exception을 발생시킵니다.
Java 관련 학습 영상 추천 : java 강좌
케이스 : 인터럽트 슬립의 대기 상태를 보여줍니다
스레드 클래스 :
package com.pbteach.thread; public class MyThread extends Thread { @Override public void run() { for(int x = 0 ; x < 100 ; x++) { System.out.println(Thread.currentThread().getName() + "----" + x ); if(x == 10) { try { TimeUnit.SECONDS.sleep(10); // 线程休眠以后,该线程就处于阻塞状态 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
테스트 클래스 :
package com.pbteach.thread; public class ThreadDemo { public static void main(String[] args) { // 创建MyThread线程对象 MyThread t1 = new MyThread(); t1.setName("pbteach-01"); // 启动线程 t1.start(); try { // 主线程休眠2秒 TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 中断t1线程的休眠 t1.interrupt(); } }
출력 결과 :
... pbteach-01----10 java.lang.InterruptedException: sleep interrupted at java.base/java.lang.Thread.sleep(Native Method) at java.base/java.lang.Thread.sleep(Thread.java:339) at java.base/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446) at com.pbteach.javase.thread.api.demo14.MyThread.run(MyThread.java:14) pbteach-01----11 ...
콘솔을 통한 출력 결과, 중단된 메서드는 현재 스레드를 종료하지 않고 스레드의 차단 상태를 중단한 후 스레드 pbteach-01이 계속 실행되는 것을 볼 수 있습니다.
stop 메서드
스레드의 실행을 종료하려면 스레드의 stop 메서드를 호출하세요.
public final void stop() // 终止线程的执行
Thread 클래스
package com.pbteach.thread; public class MyThread extends Thread { @Override public void run() { for(int x = 0 ; x < 100 ; x++) { System.out.println(Thread.currentThread().getName() + "----" + x ); if(x == 10) { try { TimeUnit.SECONDS.sleep(10); // 线程休眠以后,该线程就处于阻塞状态 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
테스트 클래스:
package com.pbteach.thread; public class ThreadDemo1 { public static void main(String[] args) { // 创建MyThread线程对象 MyThread t1 = new MyThread(); t1.setName("pbteach-01"); // 启动线程 t1.start(); try { // 主线程休眠2秒 TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 终止线程t1的执行 t1.stop(); } }
출력 결과:
... pbteach-01----9 pbteach-01----10
콘솔에 비정상적인 출력이 없고 프로그램이 종료되며 "pbteach-01" 스레드가 계속 실행되지 않습니다.
추천 관련 기사 및 튜토리얼: Java 프로그래밍 소개
위 내용은 Java 스레드 중단 중단 및 중지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!