Java篇--多线程一

一、两种创建方式
1.线程的实现方式之一:继承Thread类

在这里插入图片描述

2.线程的实现方式之二:实现Runnable接口

在这里插入图片描述
注:
共同点:将希望线程执行的代码放到run方法,然后通过调用start方法来启动线程。
区别:
  (1)继承Thread,类是单一继承原则
  (2)Runnable是一个接口,推荐多使用Runnable
 

二、start和run方法的区别

在这里插入图片描述

三、主线程获取子线程返回值方式

在这里插入图片描述

1.第一种实现方式:主线程一直等待,直到拿到为止

在这里插入图片描述

2.第二种实现方式:使用线程的join来获取子线程返回值

在这里插入图片描述

3.第三种实现方式:Callable接口
(1)FutureTask

在这里插入图片描述

(2)线程池

在这里插入图片描述
总结:第一种方式最low,第二种方式比第一种方式好,但也不推荐使用,第三种方式最优雅。
 

四、线程池的使用

开启一个线程需要三个步骤:
1.创建线程
2.在线程中执行业务逻辑
3.销毁线程
但是第一步和第三步所耗费的时间很大可能会超过第二步的时间,因为创建和销毁线程都是需要占用服务器的资源,如果此时引用了线程池,那么在应用启动的时候给你准备好了一些线程,你需要使用的时候直接拿来用,并不需要去创建,相当于把第一步和第三步的时间给我们省掉了。

线程池有四种创建方式:
newCachedThreadPool(推荐使用,优先考虑这种。在你需要的时候可以智能的添加新的线程,如果不用的时候它会给你缩小回收)
newFixedThreadPool
newScheduledThreadPool
newSingleThreadExecutor

可以浏览另一篇文章:https://blog.csdn.net/m0_37739193/article/details/78390969

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小强签名设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值