Java—初始多线程

news/2025/3/4 22:50:32/

多线程的理解

进程:

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

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

线程:

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

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

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

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

总结:

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/news/1576153.html

相关文章

[3/11]C#性能优化-实现 IDisposable 接口-每个细节都有示例代码

[3]C#性能优化-实现 IDisposable 接口-每个细节都有示例代码 前言 在C#开发中,性能优化是提升系统响应速度和资源利用率的关键环节。 当然,同样是所有程序的关键环节。 通过遵循下述建议,可以有效地减少不必要的对象创建,从而减…

2025付费进群系统PHP网站源码

源码介绍 2025付费进群系统PHP网站源码,亲测可用, PHP必需7.2 sg11扩展 tp伪静态 数据库修改地址:config/database.php 关闭防跨站 后台账号18888888888 密码123456 分站需要再解析一个域名绑定宝塔 截图预览 源码下载 2025付费进群系统PH…

2025最新Nginx高频面试题

2025最新Nginx高频面试题 摘要:本文整理了2025年企业高频Nginx面试题,覆盖核心原理、配置优化、安全防护及云原生场景实战,助你轻松应对技术面试! 核心原理篇 1. Nginx的Master-Worker架构优势是什么? 答案&#xf…

HTML 基础 (快速入门)详细步骤和示例

目录 创建基本的 HTML 文件 添加内容到页面 页面布局与链接 HTML(超文本标记语言)是构建网页的基础技术,以下是 HTML 基础的详细步骤和示例: 创建基本的 HTML 文件 步骤一:新建文件 在本地计算机上选择一个合适的…

python爬虫报错信息解决方法

今天遇到了这样一条报错: opt/conda/envs/python35-paddle120-env/bin/python /home/aistudio/work/main.py aistudiojupyter-10415006-8838159:~$ /opt/conda/envs/python35-paddle120-env/bin/python /home/aistudio/work/main.py Traceback (most recent call la…

Python办公自动化教程(007):利用python写入excel文件

文章目录 示例代码实现效果代码解释基本设置 示例代码 import openpyxl# 创建一个 Excel 工作簿 wb openpyxl.Workbook() sheet wb.active sheet.title "球员信息"# 写入数据 sheet["A1"] "球员" sheet["B1"] "球队" …

服务器间迁移conda环境

注意:可使用迁移miniconda文件 or 迁移yaml文件两种方式,推荐前者,基本无bug! 一、迁移miniconda文件: 拷贝旧机器的miniconda文件文件到新机器: 内网拷贝:scp -r mazhf192.168.1.233:~/miniconda3 ~/ 外…

三七互娱,蓝禾,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推

三七互娱,蓝禾,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推 ①康冠科技 【职位】算法、软件、硬件、技术,结构设计,供应链,…