Java—初始多线程

devtools/2025/3/3 23:31:54/

多线程的理解

进程:

进程是程序的基本执行实体

每一个运行的软件都是一个进程

线程:

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

简单理解:应用软件中互相独立,可以同时运行的功能

同时运行的程序比较多就形成了多线程

多线程:可以提高程序的运行效率。

总结:

1.什么是多线程?

有了多线程,我们就可以让程序同时做多件事情

2.多线程的作用?

提高效率

3.多线程的应用场景?

只要你想让多个事情同时运行就需要用到多线程

比如:软件中的耗时操作、所有的聊天软件、所有的服务器

多线程的俩个概念并发和并行

并发:在同一时刻,有多个指令在单个CPU上交替执行

举例理解:就像我们一边打游戏,一边吃东西,一边喝水一样,我们的打游戏喝水吃东西都是一个线程。

并行:在同一时刻,有多个指令在多个CPU上同时执行

多线程的实现方式

①继承Thread类的方式进行实现

②实现Runnable接口的方式进行实现

③利用Callable:接口和Future接口方式实现

①继承Thread类的方式进行实现

多线程的第一种启动方式:

1.自己定义个类继承Thread

2.重写run方法

3.创建子类的对象,并启动线程

第一步:自己定义个类继承Thread

第二步:重写run方法

3.创建子类的对象,并启动线程

②实现Runnable接口的方式进行实现

多线程的第二种启动方式:

1.自己定义一个类实现Runnable接口

2.重写里面的run方法

3.创建自己的类的对象

4.创建一个Thread类的对象,并开启线程

③利用Callable:接口和Future接口方式实现

多线程的第三种实现方式:

特点:可以获取到多线程运行的结果

1.创建一个类MyCallable实现callable接口

2.重写call(是有返回值的,表示多线程运行的结果)

3. 创建MyCallable的对象(表示多线程要执行的任务)

4. 创建FutureTask的对象(作用管理多线程运行的结果)

5. 创建Thread类的对象,并启动(表示线程)

多线程三种实现方式对比:

多线程的常用成员方法:

1.String getName() 返回此线程的名称

void setName(String name) 设置线程的名字(构造方法也可以设置名字)

细节:

如果我们没有给线程设置名字,线程也是有默认的名字的

格式:Thread-X(X序号,从0开始的)

  • 默认的名字

  • setName方法设置名字

  • 构造方法设置名字

2.static Thread currentThread() 获取当前线程的对象

细节:

当JVM虚拟机启动之后,会自动的启动多条线程

其中有一条线程就叫做main线程

他的作用就是去调用main方法,并执行里面的代码

在以前,我们写的所有的代码,其实都是运行在main线程当中

3.static void sleep(long time) 让线程休眠指定的时间,单位为毫秒

细节:

1、哪条线程执行到这个方法,那么哪条线程就会在这里停留对应的时间

2、方法的参数:就表示睡眠的时间,单位毫秒

1秒=1000毫秒

3、当时间到了之后,线程会自动的醒来,继续执行下面的其他代码

线程的优先级:

setPriority(int newPriority) 设置线程的优先级

优先级越高先执行完的概率越高,抢占cpu的概率也越高

final int getPriority() 获取线程的优先级

优先级从高到底是10到1如果没有设置优先级默认是5

设置守护线程:

final void setDaemon(boolean on) 设置为守护线程

注意:当非守护线程执行完毕,守护线程也会跟着取消执行。

出让/礼让线程:

public static void yield() 出让线程/礼让线程

这个方法是尽可能的使线程出现的均匀些。

插入\插队线程:

public final void join() 插入线程/插队线程


http://www.ppmy.cn/devtools/164313.html

相关文章

SQL 基础 BETWEEN 的常见用法

在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。 它包含这两个边界值。BETWEEN操作符常用于WHERE子句中,以便选取某个范围内的值。 以下是BETWEEN的一些常见用法: 选取介于两个值之间的值: 使用 BETWE…

华为OD机试真题:租车骑绿道(E卷、C++)

华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 部门组织绿道骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入描述 第一行两个数字m、n,自行车限重…

Redis和MySQL的实时数据同步方案

针对 Redis 和 MySQL 的实时数据同步,需根据业务场景选择不同的技术方案,核心目标是保障数据一致性、降低延迟、提升系统可靠性。以下是几种典型方案及其适用场景: 方案一:基于 MySQL Binlog 的异步同步 原理 监听 MySQL 的 Bin…

定义数组存储3部汽车对象(class1)

package test3; public class car {/*定义数组存储3部汽车对象汽车属性:品牌,价格,颜色创建三个汽车对象,数据通过键盘录入而来,并把数据存入数组中*/static String brond;double price;String color;public car() {}p…

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归(Multiple Linear Regression)

前端存储方案全面对比:localStorage、sessionStorage、cookies与IndexedDB

引言 在前端开发中,数据存储是一个常见需求。无论是用户偏好设置、表单数据暂存、还是应用状态维护,我们都需要在客户端保存一定的数据。浏览器提供了多种存储方案,每种都有其独特的特性和适用场景。本文将全面对比四种主要的浏览器存储技术&…

PHP缓存技术优化:提升网站性能的关键

在当今互联网高速发展的时代,网站性能优化成为各大企业以及个人开发者关注的焦点。而PHP缓存技术作为提升网站性能的关键技术之一,其优化对于网站加载速度、用户体验以及SEO排名等方面都有着重要的作用。本文将介绍PHP缓存技术的优化方法,帮助…

问题解决:word导出的pdf图片不清晰?打印机导出的不是pdf,是.log文本文档?

word导出高质量清晰pdf,一定要选择Microsoft Print to PDF虚拟打印机!!!真的无损!200多K变成600多K文件大小。不要选第一个Adobe PDF!!!