1.研发必会-异步编程利器之CompletableFuture(含源码 中)
2.如何使用微信来注册并登陆csdn社区
3.csdn底部如何展示微信公众号名片
4.详解Spring Boot如何实现每日给女朋友微信推送早安问候语和天气预报浪漫教程
5.CSDN如何绑定微信
研发必会-异步编程利器之CompletableFuture(含源码 中)
微信公众号访问地址: 研发必会-异步编程利器之CompletableFuture(含源码 中)
近期热推文章:
1、微信springBoot对接kafka,喜帖批量、并发、源码异步获取消息,微信并动态、批量插入库表;
2、喜帖SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据;
3、源码真溯源码燕窝基于Redis的微信Geo实现附近商铺搜索(含源码)
4、基于Redis实现关注、喜帖取关、源码共同关注及消息推送(含源码)
5、微信SpringBoot整合多数据源,喜帖并支持动态新增与切换(详细教程)
6、源码基于Redis实现点赞及排行榜功能
7、微信研发必会-异步编程利器之CompletableFuture(上)
一、喜帖多任务组合回调
备注:源码获取方式在文底。源码
1.1、AND组合关系
thenCombine / thenAcceptBoth / runAfterBoth都表示:将两个CompletableFuture组合起来,只有这两个都正常执行完了,才会执行某个任务。也即:当任务一和任务二都完成再执行任务三(异步任务)。
区别在于:
1、runAfterBoth:不会把执行结果当做方法入参,且没有返回值。
2、udp 源码thenAcceptBoth:会将两个任务的执行结果作为方法入参,传递到指定方法中,且无返回值。
3、thenCombine:会将两个任务的执行结果作为方法入参,传递到指定方法中,且有返回值。
代码案例:
运行结果:
1.2、OR组合关系
将两个CompletableFuture组合起来,只要其中一个执行完了,就会执行某个任务。(两个任务,只要有一个任务完成,就执行任务三)
区别在于:
1、runAfterEither:不会把执行结果当做方法入参,且没有返回值。
2、acceptEither: 会将已经执行完成的任务,作为方法入参,传递到指定方法中,且无返回值。
3、applyToEither:会将已经执行完成的压缩 源码任务,作为方法入参,传递到指定方法中,且有返回值。(个人推荐)
参考代码:
返回结果:
若将异步任务中的Thread.sleep()改为,将输出的结果为:
从结果中不难对比发现,任务的参数是任务和任务中执行最快的返回结果。
注意:若把核心线程数量改为1,会是什么样的呢?
运行结果:
从上面看出,改为1就变成单线程执行了。
1.3、多任务组合(allOf\anyOf)
1.allOf:等待所有任务都执行完成后,才会执行 allOf 返回的CompletableFuture。如果任意一个任务异常,allOf的CompletableFuture,执行get方法,会抛出异常。(等待所有任务完成才会执行)
2.anyOf:任意一个任务执行完,就执行anyOf返回的CompletableFuture。如果执行的任务异常,anyOf的CompletableFuture,执行get方法,会抛出异常。(只要有一个任务完成)
参考案例:
结果返回:
从结果中看出:等待所有任务都执行完成后,会议 源码才会执行 allOf 返回的CompletableFuture。
同理anyOf,只需要调整代码:
运行结果:
1.4、thenCompose
thenCompose方法会在某个任务执行完成后,将该任务的执行结果,作为方法入参,去执行指定的方法。该方法会返回一个新的CompletableFuture实例。
1、如果该CompletableFuture实例的result不为null,则返回一个基于该result新的CompletableFuture实例;
2、如果该CompletableFuture实例为null,然后就执行这个新任务。
代码案例:
结果:
二、使用注意点
CompletableFuture 使异步编程更加便利的、代码更加优雅的同时,也要关注使用的一些注意点。
2.1、Future需要获取返回值,才能获取异常信息
代码案例:
输出结果:
Future需要获取返回值(res.get()),才能获取到异常信息。如果不加 get()/join()方法,看不到异常信息。php平台源码使用的时候,注意一下,考虑是否加try…catch…或者使用exceptionally方法。
若改成exceptionally方法,无需get或join也可以捕获异常信息:
结果:
2.2、CompletableFuture的get()方法是阻塞的
CompletableFuture的get()方法是阻塞的,如果使用它来获取异步调用的返回值,需要添加超时时间。
推荐使用:
2.3、建议使用自定义线程池,不要使用默认的
CompletableFuture代码中使用了默认的线程池,处理的线程个数是电脑CPU核数-1。在大量请求过来的时候,处理逻辑复杂的话,响应会很慢。一般建议使用自定义线程池,优化线程池配置参数。
参考案例:
但是如果线程池拒绝策略是DiscardPolicy或者DiscardOldestPolicy,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,CompletableFuture线程池策略最好使用AbortPolicy,然后耗时的异步线程,做好线程池隔离。
说明:
AbortPolicy(默认):直接抛弃
CallerRunsPolicy:用调用者的线程执行任务
DiscardOldestPolicy:抛弃队列中最久的任务
DiscardPolicy:抛弃当前任务。
三、源码获取方式
更多优秀文章,请关注个人微信公众号或搜索“程序猿小杨”查阅。然后回复:源码,可以获取对应的源码,开箱即可使用。
如果大家对相关文章感兴趣,可以关注微信公众号"程序猿小杨",会持续更新优秀文章!欢迎大家 分享、收藏、点赞、在看,您的支持就是我坚持下去的最大动力!谢谢!
参考网站:
blog.csdn.net/ThinkWon/...
mp.weixin.qq.com/s/shjA...
如何使用微信来注册并登陆csdn社区
csdn作为一个国内编程人员的交流社区,如果需要浏览其中的帖子的话,是需要先登陆账号的,那么是否可以使用微信账号来登陆呢?接下来就由小编来告诉大家。具体如下:1. 第一步,打开电脑中的浏览器,搜索csdn官网,然后打开登陆页面。
2.第二步,打开登陆窗口后,一般都默认使用账号密码登陆,如果想要使用微信的话,需要点击下方的微信注册登陆按钮。
3. 第三步,点击打开注册登陆csdn的扫码页面。
4. 第四步,根据提示,打开手机微信,扫描页面中的二维码,然后通过验证并授权登陆。
5. 第五步,完成授权后,需要点击立即绑定按钮,来修改账号的登陆密码。
6. 第六步,密码修改完成后,需要修改密码邮箱,打开验证邮箱页面,输入验证码即可。
7. 第七步,邮箱设置完成后,回到设置页面,需要注意的是,邮箱与微信没有关系,不过可以用来找回账号密码。
8. 第八步,完成绑定后,使用微信扫码即可通过验证。
以上就是小编为大家带来的使用微信注册登陆csdn的方法。
csdn底部如何展示微信公众号名片
如果你想在 CSDN的底部展示微信公众号名片,可以按照以下步骤进行操作:
1. 首先,登录 CSDN 账户,点击右上角的“设置”选项,在弹出的下拉菜单中选择“博客设置”。
2. 进入“博客设置”页面后,你会看到许多选项,包括“底部设置”。在“底部设置”选项中,你可以添加微信公众号名片等信息。
3. 点击“底部设置”选项后,在页面下方看到“订阅”模块。你需要在这个模块中添加自己的微信公众号名片。
4. 点击“新增”按钮,在输入框中输入自己的微信公众号名称,并上传微信公众号的二维码。
5. 填写完毕后,点击“保存”按钮,即可在 CSDN 的底部展示自己的微信公众号名片。
需要注意的是,具体操作过程可能会因网站版本更新等原因而有所变化。如果以上操作无法成功,建议你查看 CSDN 的相关帮助文档或联系客服寻求帮助。
详解Spring Boot如何实现每日给女朋友微信推送早安问候语和天气预报浪漫教程
功能点
实现每日自动给女朋友微信推送早安问候语和天气预报。
技术栈点
使用Spring Boot作为核心框架,搭配第三方API接口。
源码开放
源码提供在Gitee和GitHub平台上供参考与使用。
注册微信测试账号,编辑推送模板
确保账号功能可用,定制个性化早安问候语与天气预报模板。
使用spring boot 做后台开发,并且与第三方对接
集成百度地图开放平台API获取天气数据,使用天行数据TianAPI API获取更多天气信息。
Spring Boot后台开发
构建后台服务,实现定时任务,自动化处理早安问候与天气预报推送。
部署
发布CSDN平台相应博文,提供部署指南,方便开发者学习与应用。
CSDN如何绑定微信
CSDN是IT技术交流平台,它能够绑定微信,这样也能够提高账户的安全性,所以,接下来就来说明CSDN如何绑定微信的步骤。
打开CSDN应用,进入“我的”页签,然后点击右上角的设置图标
进入设置页面之后,点击“账户与安全”选项
在“账户与安全”的界面中,点击“微信”
跳转到绑定微信的界面之后,点击“发送验证码”
编辑框中输入收到的验证码,然后点击“下一步”
然后自动启动微信APP,并且进入如下所示的界面,点击“同意”
最后可以在“账户与安全”界面中的微信右侧看到绑定成功的微信昵称