您的位置 首页 java

五分钟熟悉Java线程状态

线程 包括以下几个状态:

创建(new) 、就绪(runnable) 、运行(running) 、阻塞(blocked) --> [time waiting 、waiting] 、消亡(dead)
 

◆ 当需要新起一个线程来执行子任务时,就创建了一个线程,但是线程创建后,不会立即进入就绪状态,因为线程的运行需要一些条件(比如内存资源),只有线程运行需要的所有条件都满足了,才会进入就绪状态

◆ 当线程进入就绪状态后,不代表立刻就能获取CPU执行时间,也许此时CPU正在执行其他的事情,因此它要等待。当得到CPU执行时间之后,线程便真正进入运行状态。

◆ 线程在运行状态过程中,可能有多个原因导致当前线程不继续运行下去,比如用户主动让线程睡眠、用户主动让线程等待,或者被同步块给阻塞,此时就对应着多个状态:time waiting(睡眠或等待一定的事件)、waiting(等待被唤醒)、blocked(阻塞)。

◆ 当由于突然中断或者子任务执行完毕,线程就会被消亡。

上下文切换

对于单核CPU来说,CPU在一个时刻只能运行一个线程,当运行一个线程的过程中转去运行另一个线程,这个叫线程上下文切换。由于可能当前线程还没有执行完毕,所以在切换时需要保存线程的运行状态,以便下次切换回来可以继续之前的运行状态。线程上下文的切换就是存储和恢复CPU状态的过程,他使得线程执行能够从断点恢复执行。
 

文章来源:智云一二三科技

文章标题:五分钟熟悉Java线程状态

文章地址:https://www.zhihuclub.com/177899.shtml

关于作者: 智云科技

热门文章

网站地图