Thread.getState 메소드를 통해 스레드의 상태를 얻을 수 있습니다(스레드에는 총 6가지 상태가 있습니다)
NEW(신규) new: 아직 시작되지 않음
RUNNABLE(실행 가능 상태) runnable: JVM에서 실행 중; 또는 운영 체제를 기다리는 중 다른 리소스(프로세서 등)
//일부 프로그래밍 언어에서는 RUNNABLE을 두 가지 상황으로 구분합니다
//1.running
//2.ready
//위 두 가지 유형은 모두 Java에서 RUNNABLE
BLOCKED(Blocked 상태) Blocked: 모니터 잠금(내부 잠금)을 기다리는 중
WAITING(대기 상태) 대기 중: 다른 스레드를 기다리는 중
다음 메소드를 호출하면 대기 상태가 됩니다
Object .wait with timeout value
No Thread.join with timeout value
LockSupport.park
//자세히 소개 예정
TIMED_WAITING (시간 제한 대기 상태) timed_waiting
다음 메서드를 호출하면 시간 제한 대기 상태가 됩니다. state
Thread.sleep
시간 초과 값이 있는 개체 .wait
Thread.join 시간 초과 값이 있음
LockSupport.parkNanos
LockSupport.parkUnti
//나중에 자세히 소개됩니다
TERMINATED(종료 상태): Completed
몇 가지 예:
public class Main { public static void main(String[] a) { Thread dangqian = Thread.currentThread();//获取主线程 System.out.println(dangqian.getState());//输出RUNNABLE //表示主线程正处于RUNNABLE状态 Thread tj = new Thread();//新建1个线程 System.out.println(tj.getState());//输出NEW Thread tj1 = new Thread(new Runnable() { @Override public void run() { System.out.println("ACM"); } }); tj1.start(); //启动执行完run方法后线程终止 此时处于TERMINATED状态 } }
sleep 인터럽트 소개
Thread.sleep 메서드를 통해 현재 스레드를 일시 중지하고 WAITING 상태로 들어갈 수 있습니다.
일시 중지 기간 동안 스레드 개체의 인터럽트 메서드를 호출하여 인터럽트를 수행하면 스레드에서 java.lang.InterruptedException 예외가 발생합니다
예제(주석)가 더 명확하게 소개됩니다. 스레드 A가 실행을 완료한 후 현재 스레드는 계속해서 작업을 실행합니다. 최대 대기 시간을 지정하는 매개 변수를 전달할 수 있습니다.
A.isAlive 메서드: 스레드 A가 아직 살아 있는지 확인합니다.
Instance:public class Main { public static void main(String[] a) { Thread tj = new Thread(new Runnable() { @Override public void run() { System.out.println("1"); try { Thread.sleep(3000);//sleep是静态方法,所以通过类名来调用;让线程睡3s }catch (InterruptedException e) { e.printStackTrace(); } System.out.println("2"); } }); tj.start(); //因为是多线程,在执行tj线程时,主线程依然往下走 try { Thread.sleep(1000);//让主线程睡1s } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("3"); //由于tj线程睡得较久,所以先打印3,再打印2 tj.interrupt();//中断此线程,但实际上只是给线程设置一个中断标志,线程仍会执行;在这里用于触发异常 } }로그인 후 복사
Output:
true1
23
TERMINATEDfalse
위 내용은 Java 스레드 상태 및 일반적인 방법 분석 및 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!