多线程的初步使用

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

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,我们都需要去好好理解

相关推荐
架构源启6 小时前
文档接入与智能解析:基于 Spring AI 1.1.x 的多格式解析、版面理解与结构化抽取
java·人工智能·spring
世人万千丶8 小时前
鸿蒙Flutter TextStyle样式配置
学习·flutter·harmonyos·鸿蒙
吃着火锅x唱着歌9 小时前
Effective C++ 学习笔记 条款37 绝不重新定义继承而来的缺省参数值
c++·笔记·学习
小弥儿9 小时前
GitHub今日热榜 | 2026-07-19
人工智能·学习·github·知识图谱
稚南城才子,乌衣巷风流9 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波10 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白10 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
名字还没想好☜11 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
皓月斯语11 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
zhangrelay11 小时前
笔记本轻量高品质延寿工具完整分系统清单
运维·笔记·学习