- 获取线程的状态
Thread.State state = thread.getState();
- 线程的6中状态
- NEW 新创建线程
Thread thread=new Thread(runnable);
- RUNNABLE 可运行状态,
thread.start();
(可运状态的线程可能正在运行也可能没有运行(取决于操作系统给线程提供运行时间)) - BLOCKED 被阻塞,当一个线程试图获取一个内部的对象锁而该锁被其他线程持有,则该线程进去阻塞状态
-WAITING 等待,当线程等待另外一个线程通知调度器一个条件时,它自己进去等待状态(Object.wait()、Thread.join()、LockSupport.park()、等待Lock、等待Condition)
-TIMED_WAITING 计时等待,带有超时参数方法(Thread.sleep(millis)
、Object.wait(timeout)
、Thread.join(millis)
、LockSupport.parkNanos(nanos)
、Lock.tryLock(time, TimeUnit.SECONDS)
、Condition.await(time,TimeUnit.SECONDS)
) - TERMINATED 被终止, run方法正常退出或者没有捕获的异常导致run方法意外退出
- 线程状态切换