首页 > 其他分享 >多线程的使用-->1

多线程的使用-->1

时间:2024-08-26 09:51:59浏览次数:13  
标签:执行 调用 run -- 线程 使用 多线程 CPU

目录

1.程序 进程 线程的定义

2.创建线程

run方法

3.启动线程

4.线程优先级

5.精灵线程(守护线程)


1.程序 进程 线程的定义

  • 程序: 一组静态的代码

  • 进程: 一个处于运行状态的程序 。 进程 = 执行内存 + 线程

    每当启动一个进程时,至少会有一个线程,称为:主线程

  • 线程:程序运行的过程中,真正用来执行程序功能的那个单元

    每当一个进程开启,都会产生一个主线程

    可以根据设计需求,由主线程产生更多的子线程,共同完成程序的执行过程。

    多线程的目的就是为了提高执行效率

2.创建线程

  • 创建线程类 , 暂时2种方式

    • 自定义线程类,实现Runnable接口,重写run方法 .

      实现Runnable接口的类对象,允许被多线程单独运行。

    • 自定义线程类,继承Thread父类,重写run方法

  • 创建线程对象

    • new Thread()对象

run方法

  • run方法就是线程启动后,自动调用的方法。 就如同main方法是java程序启动后,自动调用的方法

  • 我们在编码中,不能主动的调用run方法。一旦主动调用run方法,就不属于多线程操作

  • main方法是由主线程自动调用的, run方法就有子线程自动调用

  • 子线程的启动需要一定的条件。

3.启动线程

  • 线程对象在执行时,会自动调用run方法

  • 如果(手动)主动的调用run方法,那不属于线程操作,只属于简单的面向对象操作。

  • 从计算机底层来讲,真正能够执行代码指令的是CPU

  • 当线程对象执行并能够处理代码指令时,也就说明线程对象获得了CPU(操作系统)

  • Java支持的抢占式获得CPU

  • 线程抢到cpu会执行,执行一会就回释放cpu,再重新争抢。

  • 所以多线程的执行顺序是不确定。

  • 线程创建之后,必须启动才能开始争抢CPU

  • 这里我们所谓的启动线程,不是执行线程,是让线程开始争抢cpu

  • 如何启动线程呢?

  • 调用thread.start()

    狭义多线程 和 广义多线程

  • 有多个线程对象,但只有1个cpu 。 称为广义多线程

  • 有多个线程对象,有多个cpu(处理器数量)

4.线程优先级

  • 线程的执行过程是需要抢占CPU的

  • 可以通过设置线程的优先级来提高线程抢占CPU的几率

  • 调用a.setPriority();设置优先级

    优先级的值1到 10

    所有新创建的线程,默认的优先级都是5

5.精灵线程(守护线程)

  • 所有新创建的线程,称为用户线程

    如果主线程执行完毕,但用户线程没有执行完毕,主线程会等待用户线程执行完后在关闭程序

  • 守护线程是用来守护主线程的,只要主线程执行完毕,所有的守护线程立刻结束,关闭程序

  • 调用a.setDaemon(true);设置线程是否为守护线程

标签:执行,调用,run,--,线程,使用,多线程,CPU
From: https://blog.csdn.net/lzp122390/article/details/141500673

相关文章

  • 计算机网络面试真题总结(四)
    文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/什么是滑动窗口TCP滑动窗口是TCP协议中实现流量控制和可靠传输的关键机制。滑动窗口不仅可以防止发送端数据传输......
  • Vue 3 + wangEditor 5 封装并使用富文本编辑器组件
    1.实现效果2.安装官网:https://www.wangeditor.com#Vue2安装yarnadd@wangeditor/editor-for-vue#或者npminstall@wangeditor/editor-for-vue--save#Vue3安装yarnadd@wangeditor/editor-for-vue@next#或者npminstall@wangeditor/editor-for-vue@next......
  • 云服务器配置Yolov5环境,No module named ‘torch‘, No module named ‘numpy
    客户背景因为电脑GPU不行,所以想使用云服务器跑Yolov5,但是云服务器配置环境有冲突,需要解决;报错:Nomodulenamed'torch',Nomodulenamed'numpy阿里云配置1.阿里云资费情况2.选择系统和安装GPU启动3.选择网络速度(上行下行的速度),之后确认订单就可以了。云服务器......
  • 使用ArraysList集合类实现新闻管理系统
    新闻管理系统,需求如下:        可以存储各类新闻标题(包含ID、名称、创建者)。        可以获取新闻标题的总数。        可以逐条打印每条新闻标题的名称。 News类:新闻类来存储新闻的相关信息,包括ID、名称和创建者。publicclassNews{publi......
  • 红黑树原理详解
    文章目录红黑树原理详解一、引言二、红黑树的基本性质1、基本性质2、红黑树的效率三、红黑树的操作1、插入操作1.1、插入节点1.2、调整颜色和结构1.3、修复2、删除操作2.1、删除节点2.2、调整颜色和结构2.3、修复四、总结红黑树原理详解一、引言红黑树(Red-Blac......
  • spring boot 整合spring cloud config配置中心
    创建2个项目springboot-cloud-config(作配置中心)springboot-cloud-client(客户端)springboot-cloud-config(工程)注意:2个项目springboot版本:2.4.0添加依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>......
  • 甲方扔给两个存在包名与类名均相同的Jar包,要在工程中同时使用怎么办?
    你的项目是否曾遇到过有jar包冲突,而这些冲突的jar包又必须同时存在的情况?一般来说,jar冲突都是因不同的上层依赖项,自身又依赖了相同jar包的不同版本所致,解决办法也都是去除其中一个即可。需要同时保留冲突jar包的情况,实属罕见。在与第三访系统集成通信时,有一种方式是由被集成方......
  • mysqldump的使用详解
    一、mysqldump简介mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。二、备份命令2.1命......
  • Java | Leetcode Java题解之第374题猜数字大小
    题目:题解:publicclassSolutionextendsGuessGame{publicintguessNumber(intn){intleft=1,right=n;while(left<right){//循环直至区间左右端点相同intmid=left+(right-left)/2;//防止计算时溢出......
  • 效率神器!一款方便、快捷的数据库文档查询、导出工具!
    大家好,我是Java陈序员。之前给大家推荐过一款简洁好用的数据库表结构文档生成器。永不生锈的螺丝钉!一款简洁好用的数据库表结构文档生成器今天,再给大家介绍一款开源的数据库操作工具,功能更加强大!支持文档导出、SQL查询、代码生成...以及十几种实用的工具!关注微信公众号:【Jav......