进程和线程的区别:
进程:是一个程序的运行状态和资源占用(内存、CPU)的描述
线程:是进程的组成部分,一个进程可以有多个线程,每个线程去处理一个特定的子任务
![](https://img.haomeiwen.com/i24275679/9b2b6617a25fce79.png)
线程是进程的一部分
进程的特点
1)独立性:不同的进程之间是独立的,相互之间资源不共享
(例:两个正在上课的教室有各自的财产,相互之间不共享)
2)动态性:进程在系统中不是静止不动的,而是在系统中一直活动的
3)并发性:多个进程可以在单个处理器上同时进行,且互不影响
线程的五种状态
1.创建状态:在生成线程对象,并没有调用该对象的start方法,这时线程处于创建状态
2.就绪状态:当调用了线程的start方法后,该线程就进入了就绪状态,但是此时线程调度还没有把该线程设置为当前线程,此时处于就绪状态。
在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。
3.运行状态:线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。
4.阻塞状态:线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。
5.死亡状态:如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。
![](https://img.haomeiwen.com/i24275679/7d30f22948e1a529.png)
线程状态之间的调度运行关系
![](https://img.haomeiwen.com/i24275679/459ff7739461e88a.png)
状态之间有对应的调度方法
线程的实现方式
![](https://img.haomeiwen.com/i24275679/d765ad1d4846611f.png)
建议使用实现接口的方式创建多线程
因为实现Runnable接口的方式,更加的符合面向对象,线程分为两部分,一部分线程对象,一部分线程任务
1.继承Thread类:线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,有又有线程任务。
2.实现runnable接口:将线程任务单独分离出来封装成对象,类型就是Runnable接口类型。
总结:Runnable接口对线程对象和线程任务进行解耦。
网友评论