一、什么是线程?
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

二、线程的五种状态
咱们java中一共有五种状态,创建、就绪、运行、堵塞和死亡。
1)创建:当程序刚刚创建完毕,还没有运行的时候就是创建状态
2)就绪:当程序调用了start方法,进入start方法之后,该线程就进入了就绪状态。当等待或者睡眠状态回来之后,也会进入到就绪状态
3)运行:当程序调用了run方法时,就进入了运行状态,就会开始运行run方法里面的方法
4)堵塞:当程序调用了sleep,suspend,wait等方法都可以导致堵塞,比如咱们sleep(2000)就是进入了堵塞状态
5)死亡:当调用完了run或者stop就会进入到死亡状态(注意:stop除非紧急状态,尽量不要使用stop否则会有运行到一半的线程会被强制终止,造成资源浪费啥的)

三、线程与进程的区别?

最简单的一句话来说:“进程包含线程”

spring boot 配置rabbitmq 线程池 spring boot设置线程数_就绪状态


国庆假期张梅长胖,哈哈。反正小铁是涨了1斤。~~ 啊!我的肉啊咱们直接来讲springboot中如何使用线程吧!!如果想更加了解的话。请耐心看完。

1)简单吧!! 这个是咱们最最简单的一个线程了。直接重写run方法就好了。

spring boot 配置rabbitmq 线程池 spring boot设置线程数_就绪状态_02

2)那里需要这块逻辑就放在那里直接开启就好了

spring boot 配置rabbitmq 线程池 spring boot设置线程数_java_03


好了,最简单的使用咱们已经讲完了。现在咱们再仔细的了解一下

三、线程讲解

1)一个进程再运行的时候,最少最少会有1个线程在运行。这种情况java中当然也是存在的。当运行一个java文件的时候public static void mian(String [] ages) 会开启一个线程。如:下图,最终会输出一个main(注意:输出的main与public static void mian的main没有关系)

spring boot 配置rabbitmq 线程池 spring boot设置线程数_就绪状态_04


2)线程使用有两种方法

方法一:继承Thread,就是我上面介绍的那种情况。

因为java是单继承,所以一般开发当中咱们还是用Runnable实现来解决多线程。Runnable和 Thread用法基本一样,把extends 换成implements方法二:实现Runnable接口(其实点进去咱们就能看到,Thread也实现了Runnable。如下图)

spring boot 配置rabbitmq 线程池 spring boot设置线程数_java_05


2)下一步咱们就可以启动它嘞,加油老弟!!

spring boot 配置rabbitmq 线程池 spring boot设置线程数_方法调用_06


咱们new这个类的对象,在点调用他就可以了

那有的童鞋就会问了,你的这个run和start 有啥区别么??

:废话,run和start肯定有区别,要不官方为啥弄两个嘞。

简单来说,run是作为普通方法调用,而start通过线程来调用

start() 他启动线程才是真正意义上的多线程启动,以后咱们调用尽量使用start来调用他(注意:不是强制性的使用)启动start的时候就无需等待run方法体执行完毕,可以继续执行下面的代码;通过start调用线程是处于一个就绪状态,并没有运行然后通过Thread来调用run来执行代码的

run() 方法调用,相当于普通方法调用。程序还是要顺序执行,要等待run方法体执行完毕之后,才可以继续执行下面代码

这一期,介绍的内容干货比较多,小白的话还需要多多理解!!
加油吧!! 老弟们,实践才是王道。