多线程的初步使用

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

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 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王7 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
一壶浊酒..10 小时前
Scrape Webpack练习
开发语言·javascript·webpack
ZJH__GO10 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆10 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光10 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林10 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
命运之光10 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人11 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
marvelyu11 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库