多线程的初步使用

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

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

相关推荐
2601_967338715 小时前
尚硅谷2026尚硅谷Java全栈+Python智能体教程
java·人工智能
孙克旭_6 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
Titan20246 小时前
HTTPS基础知识梳理
服务器·网络·c++·网络协议·学习·http·https
艾莉丝努力练剑6 小时前
【AI大模型接入SDK】SSE协议
c++·学习·面试·大模型·sdk
斑马1396 小时前
Linux软件编程学习笔记(五)——线程
开发语言·php
2601_961901706 小时前
SpringCloud2023集成Nacos2.4.3
java
玄昌盛不会编程6 小时前
LeetCode——2091. 从数组中移除最大值和最小值
java·算法·leetcode
Rain的Java大神之路6 小时前
如何保证接口幂等
java·经验分享·后端·面试·架构
吴声子夜歌6 小时前
Java——数组和集合(一)
java·开发语言
Jesse_EC6 小时前
一个看不见的字符——CRLF 如何让我的 Docker 初始化脚本"静默失踪"
java·后端