关于在华清学习中的收获。
目录
前言
在华清学习的所思所想
一、线程是什么?
线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。
二、线程运行的几种状态
1.新建状态 (new)
新创建了一个线程对象
2.就绪状态 (Runnable)
线程对象创建后,其它线程调用了该对象的start方法
3.运行状态(Running)
就绪状态的线程获取到了cpu的时间片,执行程序代码。
4.阻塞状态(Blocked)
阻塞状态是线程因为某种原因放弃cpu,暂停或停止运行,直到线程进入就绪状态,有机会获得cpu后转入运行状态。
5.超时等待状态 (Time_Waiting )
有确定结束时间的等待状态
6.终止状态 (Terminated )
线程结束完成之后就会变成此状态
三、线程状态转换过程
New 表示线程被创建但尚未启动的状态:当我们用 new Thread() 新建一个线程时,如果线程没有开始运行 start() 方法,所以也没有开始执行 run() 方法里面的代码,那么此时它的状态就是 New。而一旦线程调用了 start(),它的状态就会从 New 变成 Runnable。
Java 中处于 Runnable 状态的线程有可能正在执行,也有可能没有正在执行,正在等待被分配 CPU 资源。
在 Java 中阻塞状态通常不仅仅是 Blocked,实际上它包括三种状态,分别是 Blocked(被阻塞)、Waiting(等待)、Timed Waiting(计时等待),这三种状态统称为阻塞状态。
在 Waiting 和timed Waiting 状态,这两个状态是非常相似的,区别仅在于有没有时间限制,Timed Waiting 如果等待超时,由系统自动唤醒,或者在超时前被唤醒信号唤醒。
线程从 New 状态是不可以直接进入 Blocked 状态的,它需要先经历 Runnable 状态。
run() 方法执行完毕,线程正常退出。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了线程的六种状态,以及线程状态之间的转换。