java线程之Thread类

2018-03-10  本文已影响0人  dimdark

1. java线程的生命周期

java中的线程的生命周期有6个阶段:
- NEW(新建)
- RUNNABLE(就绪/运行)
- BLOCKED(阻塞)
- WAITING(等待)
- TIMED_WAITING(时间等待)
- TERMINATED(消亡)
线程的生命周期用一个枚举类来表示:

线程的生命周期
线程的生命周期图解

2. 线程的上下文切换

CPU在执行一个线程的过程中,转而去执行另外一个线程,这个叫做线程上下文切换; 在进行线程上下文切换时要保存好当前线程的运行状态, 如: 程序计数器里的值, CPU寄存器里的值等, 以使线程下一次执行能够从中断点恢复执行;

3. java线程的优先级

在java中, 线程的优先级分为 1 - 10 这10个等级;
JDK中使用3个常量来预定义线程优先级的值:

线程优先级

注意: 线程的优先级具有继承性, 比如, 线程A启动线程B, 则B线程的优先级默认与线程A是一样的

4. java线程的分类

java的线程可以分为两种类型的线程: 一种是用户线程, 另一种是守护线程;
守护线程是一种特许的线程, 当jvm进程中不存在非守护线程时则所有守护线程会自动销毁;
相关方法:

守护线程

5. Thread类 的常用方法

currentThread()方法

注意:
调用sleep方法而进入 TIMED_WAITING 状态的线程并不会释放它本身已获得的对象锁;
Thread.sleep(long) 方法执行前或执行时当前线程的表示中断状态的标志被interrupt()方法置为true则会抛出InterruptedException异常;

interrupted方法

注意: interrupted() 方法会将当前线程的中断状态清除
例子:

interrupted方法例子
isInterrupted方法 interrupt方法 isAlive()方法
上一篇下一篇

猜你喜欢

热点阅读