打个比方,用户注册,如果用户注册有如下步骤
1:给用户在数据库中添加用户信息
2:给用户的手机号发送欢迎短信
3:系统中其它模块和用户关联,需要同时添加其它的数据
这个时候,如果使用单线程,用户提交注册信息之后,系统拿到注册信息,就要按照步骤1,2,3这么一步一步走下去,在这过程中,用户只能等待,等到系统把这些步骤走完了,用户才能得到响应,才能登陆系统,这个过程会很长,用户体验不好
但是如果使用多线程,在拿到用户注册信息之后,主进程把这些任务分给多个线程去做,每个线程做一件事,效率是不是提高了,时间是不是缩短了,并且,主线程可以把关键信息录入系统之后就直接响应用户,其它事情可以让线程在后台慢慢执行,这样用户体验就会好很多。
首先,java提供了类java.lang.Thread来支持多线程编程,创建线程主要有两种方法:
第一,继承Thread类
Thread类中的run方法是空的,直接通过 Thread类实例化的线程对象不能完毕不论什么事,所以能够通过继承Thread 类,重写run 方法,实现具有各种不同功能的线程类。
run()又称为线程体。不能直接调用run(),而是通过调用start(),让线程自己主动调用run(),由于start()会首先进行与多线程相关的初始化(即让start()做准备工作)。
第二,实现Runnable接口
java仅仅同意单继承,假设类已经继承了其它类。就不能再继承Thread类了,所以提供了实现Runnable接口来创建线程的方式。
该接口仅仅定义了一个run方法,在新类中实现它就可以。
Runnable接口并没有不论什么对线程的支持,还必须通过创建Thread类的实例。将Rnnable接口对象作为Thread类构造方法的参数传递进去,从而创建一个线程。
线程的生命周期分为:创建状态、就绪状态、执行状态、堵塞状态、死亡状态。
当你了解了整个线程的架构的流程时学习起来也就相对轻松了,就像套模板一样,记住理论然后多实验几遍即可。
2021-12-14 · 学动漫、设计、电竞、电商、短视频、软件等
认识线程(Thread)
概念
线程属于进程的组成(每个进程中至少有一个线程(主线程),也可以有多个线程)
线程是os进行调度的最小单位。
进程是系统分配资源(包括CPU)的最小单位,线程是系统调度(CPU分配)的最小单位
Thread类——每个Thread对象都是代表一个线程
Runnable接口——每个Runnable对象都是一个任务
什么情况下需要线程
原有的执行流(调度单位)因为某些事件堵塞了,同时我们还需要运行一些其他的代码时
需要一些调度单位加速我们的代码运行速度
创建Java线程
Thread的几个常见属性
如何创建Java线程
Thread类是JVM用来管理线程的类,每个线程都有唯一的Thread对象关联。