当前位置: 首页 > article >正文

Java—初始多线程

多线程的理解

进程:

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

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

线程:

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

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

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

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

总结:

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.kler.cn/a/564567.html

相关文章:

  • 【Java项目】基于Spring Boot的网上商城购物系统
  • 网络安全学习-常见安全漏洞检测以及修复方法-1
  • 泛微Ecode新增Button调用服务器中的JSP页面里的方法
  • Cannot resolve net.sf.json-lib:json-lib:2.4
  • 小红和小紫的拿球游戏(B组)
  • linux在vim中查找和替换
  • AI数据分析:用DeepSeek做数据清洗
  • ArcGIS Pro中打造精美高程渲染图的全面指南
  • 2025学年安徽省职业院校技能大赛 “信息安全管理与评估”赛项 比赛样题任务书
  • 数字IC后端设计实现OCC(On-chip Clock Controller)电路介绍及时钟树综合案例
  • 论文阅读笔记:Continual Forgetting for Pre-trained Vision Models
  • winfrom的progressBar 鼠标移上去显示 进度条的时间
  • 算法day2 dfs搜索2题
  • vscode下载安装教程(附安装包)vscode图文安装教程最新版
  • 一文掌握模拟登录的基本原理和实战
  • C++:多继承和虚继承
  • Javaweb后端数据库多表关系一对多,外键,一对一
  • 【斐波那契与7】
  • 什么是GPU
  • 北京大学DeepSeek与AIGC应用(PDF无套路下载)