24_JavaSE_多线程

本文介绍了多线程的基本概念,包括多线程与进程的区别、CPU如何实现多线程及线程的生命周期,并提供了两种创建线程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 多线程简介

首先,什么是多线程呢?我先举个现实生活中的例子给大家理解一下。假如现在有一个工厂,一开始的时候我只雇佣了一个员工,那么这个工厂的工作只能由这个单一的员工来操作,那么这个员工就只能是一件一件事情依次的做,而不能同时做两件事情(毕竟人也做不到一心二意嘛);而如果我要实现该工厂同一时间有多件事情正在被做,那么我就需要多雇佣一些员工。因此,程序也是如此,单一流程,我们称为单线程;多个流程同时进行,我们称为多线程。那么按照这个标准,我们前面的章节讲到的内容就都属于单线程的范围了。

线程和进程的区别?事实上,一个进程包含一个或多个线程,而且线程是不能独立存在的,只能是进程的一部分。

CPU 如何实现多线程?我们知道,一个 CPU 在同一时刻只能处理一个线程,这并满足不了多线程的需求。因此,CPU 将执行时间分成一个个小时间片段,从而不断地在交替处理着不同的线程,从而让我们从宏观上看,认为线程之间是并发的一样。

2. 线程的生命周期

一个线程的生命周期:

执行 start 方法
执行 run 方法
run 方法执行完成
新建状态
就绪状态
运行状态
死亡状态
阻塞状态

将上面的流程图用文字描述如下:
1、新建:通过 new 关键字和 Thread 类创建对象后到调用 start() 方法前的这段状态称为新建状态。
2、就绪:调用 start() 方法到线程获取到 CPU 资源的这段时间,称为就绪状态。(有时候是因为 CPU 被其它线程占有了的情况)
3、运行:线程占有了 CPU 资源,就开始执行 run() 方法,直到程序变为阻塞状态或死亡状态的这段时间称为运行状态。
4、阻塞:在线程运行过程中,可能会触发一些机制,从而进入阻塞状态,主要情况为下:
①等待阻塞:运行状态时线程执行了 wait 方法
②同步阻塞:运行状态时线程获取 synchronized 同步锁失败(因为同步锁被其他线程占用)
③其它阻塞:运行状态时线程执行了 sleep 或 jion 等方法。
阻塞状态下的线程等待若干时间后(比如:sleep 方法超时等等)会进入就绪状态。
5、死亡:当线程完成任务或触发其它终止条件时则进入死亡状态。

3. 创建线程的方法

3.1. 实现 Runnable 接口

创建一个类,实现 Runnable 接口,重写该接口的 run 方法,创建实例后调用 start 方法。

3.2. 继承 Thread 类

创建一个类,继承 Thread 类,重写 run 方法,再通过创建实例,调用 start 方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执章学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值