Java线程基础
2019-12-28 本文已影响0人
依弗布德甘
线程状态
-
New 尚未启动的线程
-
Runnable 可运行(在运行)状态,或者等待CPU调度
-
Blocked 线程阻塞等待监视锁定状态,出于sycnhronized同步代码块或方法中被阻塞
-
Waiting 等待其他线程通知,收到通知继续执行
- Obejct.wait 、 Thread.join 、 LockSupport.park
-
Timed Waiting 具有带超时时间的线程等待状态,收到通知继续执行或超时继续执行
- Thread.sleep 、Object.wait 、Thread.join 、LockSupport.parkNanos 、LockSupport.parkUntil
-
Terminated 线程终止状态
- 线程终止后再调用,会抛出illegalThreadStateException异常
线程终止
-
不正确的线程终止
Thread.stop 弃用,强行终止无法保证线程内部执行完毕 -
正确的线程终止
-
Thread.interrupt
如果线程内部有等待阻塞或挂起状态[ wait()、join()、sleep() ],Interrupt会生效,中断状态被清除,线程内部抛出InterruptedException异常
如果线程是被I/O或者NIO中的Channel所阻塞,I/O操作会
被中断或者返回test异常值。 -
使用外部标志位控制线程终止
如:外部全局变量开关来控制线程是否结束
-