Java—实现多线程程序 | 入门

本文介绍了进程和线程的基本概念,包括进程在内存中的运行以及线程作为CPU与内存通信的通道。详细讲解了Java中如何通过Thread类实现多线程,包括创建子类重写run方法,线程名称的获取和设置,以及线程优先级的概念和设置方法。
摘要由CSDN通过智能技术生成

目录

一、前言

二、基本概念

进程

 线程

三、Java多线程实现

java.lang.Thread类

获取线程名字及对象

获取main进程名

Thread currentThread()

四、线程优先级 

设置优先级 


一、前言

前期入门学习的代码中,全部都是单线的程序,也就是从头到尾地运行

在我们平时使用手机电脑的应用程序时,它们几乎都是多线程地工作

例如idea,typora等等。本文就从现在开始,一步步尝试写多线程程序代码,一起来学习吧!


二、基本概念

进程

任何的软件存储在磁盘中,运行软件的时候,OS使用IO技术,将磁盘中的软件的文件加载到内存,程序在能运行。

这里的内存大小就是电脑内存条的大小,也就是平时所说的运行内存大小,常见的有4G,8G,16G,32G甚至更高。

 应用程序运行的时候进入到内存,程序在内存中占用的内存空间就叫进程

 线程

在内存和CPU之间,建立一条连接通路,CPU可以到内存中取出数据进行计算,这个连接的通路,就是线程

 一个进程(内存资源)可以开启多个线程,也就是多条通路。

  • 并发: 同一个时刻多个线程同时操作了同一个数据
  • 并行: 同一个时刻多个线程同时执行不同的程序

 拓展一个知识,CPU(中央处理器)现在我们都会看到多少核心多少线程,对操作系统而言,一个核心同一时刻只能运行一个进程/线程,所以多核多线程CPU可以极大提升效率

 


三、Java多线程实现

java.lang.Thread类

Java万物是对象,所以线程也是对象,Thread类是线程对象的描述类

实现线程程序可以分为几个步骤:

  1. 定义一个类来继承thread类
  2. 子类重写方法run
  3. 创建子类对象
  4. 调用子类对象的start()方法启动线程

 我们用一个简单的例子来演示一下,运行一下for语句

//定义一个类来继承thread类
//子类重写方法run
public class SubThread extends Thread {
    public void run(){
        for(int x = 0 ; x < 50 ;x++)
            System.out.println("run---"+x);
    }
}
public static void main(String[] args) {
    SubThread subThread = new SubThread();    //创建线程程序
    subThread.start();            //调用子类对象的方法start()启动线程
    //启动线程,JVM调用方法run
    for(int x = 0 ; x < 50 ;x++)
    	System.out.println("main---"+x);
}

我们运行一下,不难看到两个for此时是分开工作,且符合线程的随机性(是个渣男),喜欢哪个,就运行哪个,所以你会发现,每次运行输出的结果都会不一样,无规律性

获取线程名字及对象

 既然我们成功运行了程序,那就进一步了解线程的相关知识。

线程也是有名字的,默认为thread-0,thread-1,thread-2,以此类推

要查看线程的名字,我们可以用thread类的方法getName()返回线程的名字,返回值是String类型

因为继承的是父类thread,要用其方法,也得使用super

public class ThreadName extends Thread {
    public void run (){
        System.out.println("线程名字:: "+ super.getName());
    }
}

当我们想修改线程名时,就可以使用setName()方法

   public static void main(String[] args) {
        ThreadName threadName = new ThreadName();
        //threadName.setName("线程1");
        threadName.start();

        ThreadName threadName1 = new ThreadName();
        //threadName1.setName("线程2");
        threadName1.start();
    }

获取main进程名

前言说道,入门写过的代码,都是单线程,那这个单线程的main进程名该怎么获取,首先我们可以尝试一下让这个类继承一下thread类

当然,因为是静态static

 public static void main(String[] args){

}

所以我们不能直接调用thread的getName()方法,这时我们可以使用另一个方法返回一个线程对象,然后用这个对象来调用getName()方法

Thread currentThread()

  • 静态调用,作用是返回当前的线程对象

  • "当前" , 指的是调用这个方法的线程

我们在上面的main中调用,就可以返回当前(main)的 对象

Thread thread =  Thread.currentThread();
System.out.println("name::"+thread.getName());

 运行结果显示,它的线程名就为:main

 同理,也可以用此方法获取其他继承thread类的子类的线程名,代替getName()


四、线程优先级 

 所有的线程优先级都是默认的,所以会产生刚开始我们设置两个线程进行for循环,输出结果无规律的现象。默认值为5,最低为1,最高为10

设置优先级 

这次使用到的方法如下: 

setPriority()

 创建好对象后,我们调用setPriority()方法即可。

 理论上 优先级高的线程,占用CPU时间相对较长一些

t1.setPriority(MAX_PRIORITY);    //优先级最高
t0.setPriority(MIN_PRIORITY);    //优先级最低

今天的Java多线程程序学习就到此为止了,喜欢的小伙伴记得点赞关注,一键三连,你们的支持就是我最大的动力,谢谢!

Java基础知识 1】Java入门级概述
学Java,找哪吒
09-25 15万+
CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程Java代码实例,理论结合实战,实现Java的轻松学习。
Java多线程程序设计入门
03-04
Java为我们提供了线程Thread来创建线程,创建线程与创建普通的的对象的操作是一样的,而线程就是Thread或其子的实例对象。下面是一个创建启动一个线程的语句:Thread thread1=new Thread(); file://声明一个...
Java 实现多线程的四种方式
明月燃雨
09-19 1万+
Java实现多线程一共有四种方式: 继承 Thread 实现 Runnable 接口 实现 Callable 接口 线程池 下面我将对这四种方式进行入门级的解析和演示。 一、继承 Thread 通过继承 Thread 实现多线程的步骤如下: 创建 MyThread ,让其继承 Thread 并重写 run() 方法。 创建 MyThread 的实例对象,即创建一个新线程。 调用 start() 方法,启动线程。 代码示例如下: public class MyThread ex
Java多线程学习(吐血超详细总结)
热门推荐
Evankaka的专栏
03-14 42万+
本文主要讲了java多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。
编程必备:JAVA多线程详解
拾一二的博客
06-14 8605
多线程已经成为一种常见的编程模式,广泛应用于各种不同型的应用程序中。本篇博客文章中,我们将会探讨多线程编程的相关知识和技巧。通过代码示例和实际应用案例来深入了解多线程的具体实现和应用方法,帮助更好地掌握多线程编程技术,提高程序效率和性能。后期随学习深入还会补充修改。以上就是我对多线程的个人简介,后续会不断完善更新,与大家共勉。
Java 多线程编程(入门
威威的博客
10-04 1198
java 多线程编程入门级指导
Java 实现多线程的四种方式 超详细
PassionAnytime的博客
08-03 1万+
java线程池
多线程开发实战:Java实现多线程四种方式及相关方法原理
陈橘又青的博客
07-02 3万+
本文带大家了解Java实现多线程的四种方法以及实现多线程的重要注意事项和难点!
Java零基础之多线程篇:多线程最佳实践
喵手的博客
08-01 1273
在计算机科学领域,多线程是一种重要的编程概念。它允许程序同时执行多个任务,提高了程序的并发性和响应性。对于Java开发者而言,了解和掌握多线程编程是非常重要的一项技能。本文将从零基础开始介绍Java多线程的概念和用法,帮助读者理解多线程的原理和实践技巧。我们将深入探讨多线程的最佳实践,包括源代码解析、应用场景案例、优缺点分析和具体的Java代码测试用例。本文将带领读者逐步学习Java多线程编程的基础知识和高级概念。我们将通过详细的源代码解析和实际应用场景案例,帮助读者理解多线程的内部工作原理和使用技巧。
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
qq_35716689的博客
03-20 25万+
CompletableFuture为Java提供了强大的异步编程能力,可以极大地提高应用的并发能力和响应速度。通过并行执行多个查询任务,我们可以大幅减少接口的响应时间,优化用户体验。同时,CompletableFuture的代码风格函数式、简洁、优雅,也使得代码更加易读易维护。 但是,异步编程也不是万能的,它需要开发者转变思维模式,还需要权衡利弊。在实际项目中,我们可以结合其他优化手段,选择合适的方案,以达到最佳的性能效果。
java多线程入门知识及示例程序
09-04
"Java多线程入门知识及示例程序" Java多线程是一种非常重要的编程技术,它可以帮助开发者创建高效、可扩展的程序多线程的出现是为了解决某些问题,如图形界面的出现、输入、输出的阻塞和多核CPU的更好利用等。 ...
Java多线程与高并发入门到精通-视频教程网盘链接提取码下载.txt
09-08
### Java多线程与高并发入门到精通 #### 一、多线程概念与原理 在计算机科学领域,多线程是指程序中的多个线程同时执行的能力。在Java语言中,多线程是通过`Thread`和`Runnable`接口实现的。线程是进程内的一个...
java多线程和并发包入门示例
09-04
Java多线程Java编程中的重要组成部分,它允许程序同时执行多个任务,从而提高系统效率和响应速度。在Java中,实现多线程有两种主要方式:继承`Thread`实现`Runnable`接口。 1. 继承`Thread`: 当一个...
java多线程入门的源代码
03-28
Java多线程Java开发中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread实现Runnable接口。 1. 继承Thread: 当一个继承了Thread...
【C++刷题】力扣-#121-买卖股票的最佳时机
会写代码的饭桶
10-16 602
给定一个数组 prices,其中 prices[i] 表示第 i 天的股票价格。假设你可以在第 i 天买入并在第 j 天卖出股票(i ≤ j),设计一个算法来计算你所能获取的最大利润。注意你只能持有一股股票,并且你不能同时参与多笔交易(即在再次买入前必须卖出股票)。
java 异常包装
最新发布
fdvvg的博客
10-17 374
通过异常包装,可以在Java中有效地处理和传递异常。这样做不仅能保持原始异常的信息,还能为上层调用者提供更多的上下文信息。
基于SSM班级事务管理系统的设计
2401_87849773的博客
10-15 469
管理员账户功能包括:系统首页,个人中心,学生管理,班委管理,班会组织管理,健康档案管理,党员发展管理,党员培训管理,学生成绩管理。主要技术:Java,Spring,mybatis,mysql,jquery,html。班委账号功能包括:系统首页,学生管理,学生成绩管理,活动信息管理,班费通知管理。服务器:SpringBoot自带 apache tomcat。JDK版本:Java JDK1.8。数据库可视化工具: navicat。数据库版本: mysql5.7。开发系统:Windows。
JavaWeb合集05-SpringBoot基础知识
qq_57340195的博客
10-17 899
Autowrite :自动装配,通过声明的数据型来装配对应的bean对象。缺点,只能获取到一个相同型的bean对象,如果有IOC容器里面有2个Bean对象,使用@Autowrite依赖注入就好报错。由于三层架构中,每一层都需要下次成来提供对应的方法,所有要new 下一次的对象,如果上一层的名发送改变,那么上一层就需要修改对应的名,如下。3、@Resource注解:通过它来代替@Autowrite注解,直接指定要注入的Bean对象,参数name的值就是要注入的Bean对象。
确保Spring Boot定时任务只执行一次方案
2301_76419561的博客
10-14 767
确保Spring Boot定时任务只执行一次有多种方法,你可以根据实际需求选择最适合的方法。如果你需要更复杂的任务调度或周期性执行,@Scheduled注解和接口是更合适的选择。而对于一次性的初始化任务或应用程序启动任务,注解和实现接口则更为简洁明了。
Java多线程入门Thread与Runnable实现详解
Java多线程总结(一) 在Java编程中,多线程实现并发处理的关键技术,它允许程序在同一时间执行多个任务,提高了程序的效率和响应性。Java提供了两种主要的方式来创建多线程:继承Thread实现Runnable接口。 ...
写文章

热门文章

  • KMS主机大全(基本都能用) 70599
  • edge浏览器,无法继续下载,提示检测到病毒的问题 21650
  • 数据结构实验—宿舍管理系统(C,Python,Java三种代码版本) 16646
  • 自动化测试,我猜它是你想要的优选 15957
  • C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码) 13935

分类专栏

  • C语言基础入门及项目实战 付费 11篇
  • 冰小九带你学习Java基础 6篇

最新评论

  • 【AI模型】一分钟教你使用GPT-SoVITS,克隆你的声音,效果十分逼真,手把手实操教程

    m0_68862485: 为什么我下载后运行显示找不到路径,而且文件名也没有.bat

  • 【AI模型】一分钟教你使用GPT-SoVITS,克隆你的声音,效果十分逼真,手把手实操教程

    小泥人Hyper: 开头的链接就是,github上下载

  • 【AI模型】一分钟教你使用GPT-SoVITS,克隆你的声音,效果十分逼真,手把手实操教程

    pyfintn: 软件在哪可以下载?

  • C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

    小泥人Hyper: 尝试每个都加个_T看看有没有问题,例如_T("游戏开始")

  • C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

    小泥人Hyper: 私信具体报错看看

最新文章

  • 【C语言动态规划——完全背包问题】优化背包模型以及无效化情况处理,零钱兑换问题的优化解法
  • 主流编译器及国产编译器,优缺点综合调研
  • npm淘宝最新镜像源切换教程
2024年12篇
2023年26篇
2022年22篇

目录

目录

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小泥人Hyper

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢斑马雕塑视频玻璃钢浮雕室外雕塑小品黄山动物玻璃钢雕塑批发渔夫玻璃钢图片雕塑徐州玻璃钢雕塑厂家供应铜川玻璃钢关公雕塑鼎湖玻璃钢浮雕雕塑批发惠州玻璃钢景观雕塑玻璃钢仿铜雕塑造价北京大型商场美陈采购广东景观玻璃钢雕塑昆明动物玻璃钢雕塑福建抽象玻璃钢雕塑生产厂家玻璃钢柑橘卡通雕塑卡通人玻璃钢雕塑摆件厂家直销武汉广场玻璃钢雕塑制作绍兴景区玻璃钢雕塑销售厂家各类玻璃钢雕塑武汉商场美陈布置南通玻璃钢卡通雕塑厂家耐高温玻璃钢雕塑摆件多少钱福建玻璃钢花盆市场纤维玻璃钢雕塑厂家四川通道商场美陈怎么样甘肃广场玻璃钢雕塑公司标准玻璃钢雕塑多少钱一平方北海玻璃钢花盆雕塑宁德企业玻璃钢雕塑玻璃钢雕塑造型厂家精准推荐云南动物玻璃钢雕塑价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化