이 기사에서는 Java 스레드 중단과 차단의 차이점이 무엇인지 설명합니다. Java 스레드 중단과 차단의 비교에는 특정 참조 값이 있습니다. 도움이 필요한 친구가 참고할 수 있기를 바랍니다.
저를 포함한 많은 Java 개발자, 특히 소프트웨어 산업에 막 입문한 초보자는 Java에서 스레드 인터럽트를 설정하면 스레드가 중지되어 앞으로 실행되지 않는다는 의미라고 생각합니다.
Thread.currentThread().interrupt ()
실제로는 그렇지 않습니다. 스레드 중단은 단지 상태일 뿐이며 true는 중단되었음을 의미하고 false는 중단되지 않음을 의미합니다
//스레드 중단 상태를 가져오고 중단되면 true를 반환하고 그렇지 않으면 false를 반환합니다
Thread. currentThread().isInterrupted()
스레드 인터럽트 설정은 스레드의 지속적인 실행에 영향을 미치지 않습니다. 그러나 스레드가 인터럽트를 설정한 후 스레드에서 wait, jion 및 sleep 메소드 중 하나가 호출되고 InterruptedException이 발생합니다. 즉시 발생하고 인터럽트 플래그가 지워지고 false로 재설정됩니다.
클래스 Thread2는 Runnable을 구현합니다.{
@Override public void run() { try { System.out.println(); System.out.println(hread.currentThread().isInterrupted());//输出false Thread.currentThread().interrupt();//当前线程中断 System.out.println("Thread.currentThread().isInterrupted());//输出true Thread.sleep(3000);//中断后执行sleep会抛出异常 } catch (InterruptedException e) { e.printStackTrace(); System.out.println("Thread.currentThread().isInterrupted());//输出false } } }
스레드를 실제로 중지하고 앞으로 실행하지 않게 만드는 방법:
실제로 스레드를 중지(차단)하기 위해 Java는 일반적으로 사용되는 메서드인 LockSupport라는 상대적으로 낮은 수준의 동시성 도구 클래스를 제공합니다. 이 클래스에는 두 가지가 있습니다. 1
park(객체 차단기)는 지정된 스레드를 차단하는 것을 의미하고 매개변수 차단기는 현재 스레드 객체입니다. 2 unpark(스레드 스레드)는 지정된 스레드를 깨우고 매개변수 스레드는 스레드 객체를 지정합니다
예제 :
public void test_LockSupport(){ Thread thread=new Thread(new Thread_park()); thread.start();//阻塞当前线程 Thread thread2=new Thread(new Thread_unpark(thread)); thread2.start();//唤醒被阻塞的线程 } class Thread_park implements Runnable{ @Override public void run() { System.out.println("Thread_park开始"); LockSupport.park(this);//阻塞当前线程 System.out.println("Thread_park结束"); } } class Thread_unpark implements Runnable{ private Thread thread; public Thread_unpark(Thread thread) { this.thread = thread; } @Override public void run() { System.out.println("Thread_unpark开始"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } LockSupport.unpark(thread);//唤醒被阻塞的线程 System.out.println("Thread_unpark结束"); } }
관련 권장 사항:
자세한 설명 Java 멀티 스레드 프로그래밍에서 LockSupport 클래스의 스레드 차단 사용
위 내용은 Java 스레드 중단과 차단의 차이점은 무엇입니까? Java 스레드 중단 및 차단 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!