多线程的初步使用

我在上一篇博客中分享了什么是线程与进程,我这篇想要分享一下如何去使用多线程,我会分享一分享些最基础的使用的方法,使我们能够快速上手去使用

Thread类

我们想要在Java中使用多线程,我们肯定是要使用Thread这个类的,用这个类创建一个对象就是一个线程,这个类的本身并不是线程,而是执行线程的类,那么这个能干些什么?以下就是这个类的一些基本使用方法

  • 职责
    • 创建并启动新线程;
    • 控制线程生命周期(启动、暂停、终止);
    • 提供线程间协作机制(等待、通知、中断);
    • 暴露线程元信息(名称、ID、优先级、状态等

我今天主要想要分享Thread类的一些基础创建方法,后续的内容我会在以后的博客中与大家分享

方法1--继承Thread,重写run方法

我们可以自己创建一个类继承Thread类,并且重写Thread类的run方法,run方法内部写我们想要实现的逻辑,如下图所示

为了方便观察结果,我这里加了sleep,最后的结果是先执行main线程,后执行t1线程,线程之间是并发执行的(看起来并发,实际是cpu的随机调度),不加sleep这两谁先执行不好说

方法2--实现runnable类,重写run

在我们写代码中,我们希望代码之间的关联度能够降低,这样方便我们后续改代码,为什么实现这种降低耦合的效果,我们可以使用runnable来创建一个线程,如下图所示

我们创建一个runnable对象进行传参传给Thread类,在后面你还可以给Thread命名,这样我们就实现了解耦合的效果,我们可以写不同的runnable传进去

方法3--Thread使用匿名内部类

这个就很简单了,不涉及继承,而是直接使用匿名内部类来直接创建对象,直接上图

方法4--runnable使用匿名内部类

和上面的使用方法一样,直接通过匿名内部类创建runnable对象传进Thread类中

匿名内部类的写法我自认为是比较简单且简洁的,希望大家能够熟悉掌握

方法5--lambda表达式

这个是最简化的版本了,不依靠内部类直接重写run方法,lambda表达式就直接帮你重写了run方法,这个方法也很重要,写起来也很简洁

结语

对于这五种情况用的比较多的就是匿名内部类和lambda表达式,但是所有我们豆需要掌握,至少以后在工作遇到了不能够不认识,这些以后都会和大家经常见面,还会有更绕的用法,比如lambda表示中继续套runnable,我们都需要去好好理解

相关推荐
AI_零食1 小时前
鸿蒙原生 ArkTS 布局方式——Column 最大高度约束:constraintSize maxHeight 防溢出
学习·华为·harmonyos·鸿蒙·鸿蒙系统
某风吾起1 小时前
C语言总结
c语言·开发语言
winlife_1 小时前
全程用 AI 做一款商业级手游 · EP7 表现层与手感:从“能跑“到“摸起来爽“
java·开发语言·人工智能·unity·ai编程·游戏开发·mcp
fox_lht1 小时前
GPUI 框架完整学习教程
学习·rust·gpui
专注VB编程开发20年1 小时前
阿里通义灵码插件安装失败
开发语言·ide·c#·visual studio
一楼的猫1 小时前
茄子写作助手是什么——网文作者长篇小说AI创作工具完整说明
人工智能·学习·机器学习·chatgpt·ai写作
AI_零食1 小时前
HarmonyOS-鸿蒙原生 ArkTS 布局系统:width(‘100%‘) 的本质与 padding 陷阱
前端·学习·华为·harmonyos·鸿蒙
一个儒雅随和的男子1 小时前
MQTT常见的问题?
java
Mr.45671 小时前
Netty中实现设备消息串行处理:Semaphore + 线程池
java·后端