皮皮网
皮皮网

【postern源码】【科技节源码】【区块链 开源码】spring task 源码

来源:电话轰炸的源码 发表时间:2024-12-23 00:42:15

1.Spring-@Async注解
2.SpringBoot几种定时任务的源码实现方式
3.java前端开发用什么软件(java前端开发工程师)
4.SpringBoot整合Activiti工作流(附源码)
5.研发必会-异步编程利器之CompletableFuture(含源码 中)

spring task 源码

Spring-@Async注解

       开启异步及调度功能的前提是需在方法上使用@Async注解,此注解使得方法的源码调用立即返回,而其真正的源码执行则在SpringTaskExecutor提交的task中。即使方法存在参数,源码也只需在调用时采用"正常"方式,源码而非由Spring容器管理的源码postern源码调度任务调用。若方法需返回值,源码应保证返回值类型为Future,源码以便于通过Future的源码get方法获取异步执行结果。@Async方法不仅支持常规的源码Future返回类型,还支持Spring的源码ListenableFuture和从Spring 4.2开始引入的CompletableFuture,以实现与异步任务的源码更丰富交互以及与后续处理步骤的直接组合。然而,源码@Async注解与生命周期回调如@PostConstruct不能并用,源码若需异步初始化Spring Bean,源码则需通过单独的初始化Spring Bean实现,再在该Bean上调用@Async注解的方法。

       默认情况下,使用@Async注解的方法使用的是启用异步支持时配置的executor,即XML中的annotation-driven元素或AsyncConfigurer实现中的。若需使用非默认的executor执行特定方法,可通过@Async注解的value属性指定。此属性可接收Spring容器中任意executor bean的名称,或XML中自定义qualifier关联的executor名称。

       当@Async方法返回Future类型时,异常处理较为简单,因调用get方法时会抛出异常。科技节源码但若返回类型为void,异常则无法被捕获。此时,可通过提供AsyncUncaughtExceptionHandler来处理这种未捕获的异常。默认情况下,异常仅被记录日志,可通过AsyncConfigurer或XML元素自定义AsyncUncaughtExceptionHandler。

       Spring中的TaskExecutor接口与java.util.concurrent.Executor接口相同,用于执行基于线程池语义和配置的任务。其唯一方法execute(Runnable task)接受任务执行,隐藏了Java SE和Java EE环境之间的实现细节。TaskExecutor最初是为了给其他Spring组件提供线程池抽象,例如ApplicationEventMulticaster、JMS的AbstractMessageListenerContainer和Quartz集成,它们都使用TaskExecutor来池化线程。但若组件需线程池行为,也可直接利用TaskExecutor满足自定义需求。

       在XML配置中使用TaskExecutor时,请参阅相关文档以获取更详细的配置指导和示例。

SpringBoot几种定时任务的实现方式

       定时任务的实现方式有以下几种:

       1. 使用Timer:这个方式在项目中使用较少,以下是demo代码,具体介绍可以查看api。

       2. 使用ScheduledExecutorService:该方法与Timer类似,以下是demo。

       3. 使用Spring Task实现简单定时任务:在SpringBoot项目中,我们可以使用注解优雅地实现定时任务。区块链 开源码首先创建项目并导入依赖。

       4. 创建任务类:在主类上使用@EnableScheduling注解开启对定时任务的支持,然后启动项目。

       5. 多线程执行:在传统的Spring项目中,我们可以在xml配置文件中添加task的配置。而在SpringBoot项目中,一般使用config配置类的方式添加配置,因此新建一个AsyncConfig类。

       6. 执行时间的配置:在上述定时任务中,我们使用@Scheduled注解在方法上设置任务的执行时间,并使用三种属性配置方式。

       7. Cron表达式详解:一个cron表达式至少有6个(也可能7个)由空格分隔的时间元素,按顺序依次为秒、分钟、小时、天、月、星期、年份。

       8. 配置实例:每隔5秒执行一次:/5 * ?,每隔1分钟执行一次:0 /1 ?,每天上午点、下午2点、4点:0 0 ,, ?。

       9. 整合Quartz添加依赖:如果SpringBoot版本是2.0.0以后的,则在spring-boot-starter中已经包含了quart的线程池源码workerqueue依赖,可以直接使用spring-boot-starter-quartz依赖。如果是1.5.9则要使用以下添加依赖。

       . 创建任务类TestQuartz,该类主要继承了QuartzJobBean,创建配置类QuartzConfig,启动项目。

       以上是关于SpringBoot定时任务的处理简单介绍,直接使用SpringTask注解的方式应该是最方便的,而使用Quartz从2.0开始也变得很方便。对于这两种方式,各有长处,按需选择。

java前端开发用什么软件(java前端开发工程师)

       java可以做前端开发么?

       é¦–先,JAVA是可以做前端开发的,无论是桌面端、WEB端、还是移动端都是可以的。

       å…¶æ¬¡ï¼Œæ¡Œé¢ç«¯ä½¿ç”¨JAVA做前端并不多见,常见的框架工具就是SWF,比如eclipse编辑器就是使用SWF开发的。包括像是oracle/db2等的管理工具也都是java开发的。

       ç„¶åŽï¼ŒWEB端的话,以前有个applet小程序,现在已经是比较少见了。

       ç§»åŠ¨ç«¯ï¼ŒçŽ°åœ¨å€’是非常的常见,android的开发现在已经是非常成熟的了。

常用的编程软件有那些

       å¸¸ç”¨çš„变成软件有:Visualstudio、WebStrom、PhpStorm、Notepad++、EditPlus、SublimeText等。

       1、Visualstudio

       Visualstudio是一款由美国微软公司开发的开发工具集,简称VS,它包括了整个软件的生命周期所需要的大部分工具,比如UML工具,代码管控工具,集成开发环境IDE等等。

       2、WebStrom

       WebStrom是jetbrains公司旗下的一款JavaScript开发工具,目前被广大的中国JS开发者誉为"Web前端开发神器","最强大的HTML5编辑器"和"最智能的JavaScriptIDE"等。

       3、PhpStorm

       PhpStorm是一个专业轻量级且便捷的PHPIDE,旨在提供了用户效率,可深刻理解用户的编码,提供智能的代码补全,快速导航以及即时错误检查等等强大的功能。

       4、Notepad++

       Notepad++,能够支持种编程语言,比如C,C++,Java,C#,XML,HTML,PHP,JavaScript等等,是程序员必备的文本编辑器,比起微软的记事本,它小巧高效,是个不错的选择。

       5、EditPlus

       EditPlus是一款由韩国SangilKim出品的小巧而功能强大的可处理文本,HTML和程序语言的Windows编辑器,可以通过设置用户工具将其作为C,Java,PHP等等语言的一个简单的IDE

       6、SublimeText

       SublimeText是一款代码编辑器,是HTML和散文先进的文本编辑器。具有漂亮的用户界面以及强大的功能,比如代码缩略图,Python插件,代码段等。

自己是学java的,现在想写前端代码的话用哪个软件比较好?

       1、SublimeText

       SublimeText是一个代码编辑器也是HTML和散文先进的文本编辑器。漂亮的用户界面和非凡的功能,例如迷你地图,多选择,Python的插件,代码段,等等。完全可自定义键绑定,菜单和工具栏。SublimeText的主要功能包括:拼写检查,书签,完整的PythonAPI,Goto功能,即时项目切换,多选择,多窗口等等。

       2、Dreamweaver

       AdobeDreamweaver使用所见即所得的接口,亦有HTML(标准通用标记语言下的一个应用)编辑的功能,借助经过简化的智能编码引擎,轻松地创建、编码和管理动态网站。访问代码提示,即可快速了解HTML、CSS和其他Web标准。使用视觉辅助功能减少错误并提高网站开发速度。

       3、VisualStudioCode

       VisualStudioCode中文版是微软推出的带GUI的代码编辑器,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。软件主要改进了文档视图,完善了对Markdown的支持,新增PHP语法高亮。

       4、HBuilder

       HBuilder是专为前端打造的开发工具,具有飞一样的编码、最全的语法库和浏览器兼容数据、可以方便的制作手机APP、最保护眼睛的绿柔设计等特点。支持HTML、CSS、JS、PHP的快速开发。从开放注册以来深受广大前端朋友们的喜爱。

       5、WebStorm

       WebStorm是jetbrains公司旗下一款JavaScript开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScriptIDE”等。与IntelliJIDEA同源,继承了IntelliJIDEA强大的JS部分的功能。

用java开发的、较成功的桌面应用软件有哪些?

       ç”¨java开发的、较成功的桌面应用软件有很多,具体软件名字建议官网查询。学java开发推荐选择千锋教育,该教育机构采用全程面授高品质、高体验培养模式,非常不错。

       java开发需要掌握的内容如下:

       1、Java基础

       ä¸»è¦æ¶‰åŠï¼šJava基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性等知识点.

       2、JavaWeb开发

       ä¸»è¦æ¶‰åŠï¼šå‰ç«¯æŠ€æœ¯ã€æ•°æ®åº“、JAVA数据库操作、软件服务器及服务器相关技术、动态网页JSP、AJAX等知识点.

       3、Java高级框架

       ä¸»è¦æ¶‰åŠï¼šSpringMVC、MyBatis、Spring、MySQL高级、LinuxRedisNginx、Maven等知识点

       4、大型微服务分布式技术

       ä¸»è¦æ¶‰åŠï¼šSpringBoot、SpringCloud、Git、Dubbo、Zookeeper、AngularJS、SpringSecurity、BCrypt加密、FastDFS、分布式事务处理、RedisCluster、Solr、SolrCloud、Freemarker、JMS、短信发送平台、SSO解决方案、CORS、Twitter的Snowflake、SpringTask、MavenProfile、MongoDB简介、MyCat、Docker、Jenkins等知识点。

       æƒ³è¦äº†è§£æ›´å¤šæœ‰å…³java开发的相关信息,推荐咨询千锋教育。千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。课程包含HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训、区块链培训、影视剪辑包装培训、游戏原画培训、全媒体运营培训。采用全程面授高品质、高体验培养模式,非常值得选择。

       WEB开发中前台和后台各用什么软件,或者技术之类的?

       é¦–先,前台后台可能你我理解不一样。叫服务器端和浏览器端(或者客户端)会更加准确点。

       åœ¨æœåŠ¡å™¨ç«¯ï¼ŒPHP是可选用的开发语言之一,当然,常用的还有java,asp.net,

       åœ¨æµè§ˆå™¨ç«¯ï¼Œæ²¡æœ‰æ”¯æŒPHP脚本运行的环境。因为这是由浏览器厂商决定的,当前占绝大部分市场的就是javascript了。因为有的浏览器(如IE)都不能自动更新,所以浏览器端技术进步很慢。也有一些开发者选择用actionscript(flash)来做Js做不了的事,但那总是少数。

       å¯¹äºŽä½ æ¥è¯´ï¼Œå‰ç«¯å¯ä»¥è®©ä½ æ˜Žæ˜Žç™½ç™½çš„看到你的成果,而后端则是看不见的。也许对有些人来说这也是枯燥无味的

       dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。Flash又被称之为闪客,是由macromedia公司推出的交互式矢量图和Web动画的标准,这两个是软件,可以网上下,HTML是一种语言,你打开一个网页查看源代码,里面的就是HTML语言写的

       å‰å°ç”¨javascriptcsshtml,flash,后台用php,asp,.net,jsp。这些都可以用的,你学Java语言都会了解到的

你最喜欢用哪款前端开发工具?为什么?

       å‰ç«¯å¼€å‘最爽的地方就在于,一个编辑器,一个浏览器就足矣走天下。

       ç¼–辑器——VSCode

       å‰ç«¯å¼€å‘利器,超级好用的编辑器,对于大前端来说更是不可多得。由微软出品,跨平台支持,颜值高,易上手,丰富的插件支持。下面推荐几个前端常用插件。

       è°ƒè¯•å·¥å…·ï¼šå‰ç«¯æ€§èƒ½ä¼˜åŒ–工具:

       YellowLabTools:一款Web性能及前端质量测试工具。与其他工具不同的是,它有一些在其他工具上无法看到的独特功能,例如页面加载时JavaScript与DOM互动和其他程序代码验证问题。

       DOMmonster:你只需要添加到你的浏览器书签中,在任何需要调试的页面点击这个书签,它就能够帮助你列出目前页面出现的性能问题。

       å‰ç«¯å¼€å‘是目前一个非常火的行业,就业前景和薪资水平都非常不错,至于开发工具的话,那就非常多了,大部分代码编辑器、IDE环境都支持,下面我简单介绍4个非常不错的前端开发工具,感兴趣的朋友可以尝试一下:

       ä»£ç ç¼–辑器

       è¿™æ˜¯ç›®å‰å‰ç«¯å¼€å‘一个非常流行的开发工具,在业界非常受欢迎,免费、开源、跨平台,由微软自主研发,可以说是良心产品,常见的智能补全、代码高亮、语法提示等功能这个软件都能很好支持,除此之外,插件扩展非常丰富,可以很好的进行代码编辑和调试,轻巧灵活,运行速度快,对于前端开发来说,是一个非常不错的选择:

       è¿™ä¹Ÿæ˜¯ä¸€ä¸ªæ¯”较轻巧灵活的代码编辑器,文本编辑功能强大,完美支持3大操作平台,但原则上不免费,和VSCode类似,SublimeText也支持自动补全、语法提示、代码高亮等常见功能,除此之外,针对前段开发也提供了非常多的插件,不管是编辑还是调试代码来说,都非常方便,对于前端开发来说,也是一个不错的选择:

       IDE环境

       è¿™æ˜¯ä¸€ä¸ªçº¯ç²¹çš„国产WebIDE开发工具,目前在前端开发中也有着较高的使用率,常见的自动补全、代码高亮、语法提示、错误检查等功能这个软件都能很好兼容,除此之外,界面柔绿、清爽护眼,针对Vue专门打造了插件扩展,可以很好的提高开发效率,还支持安卓、iOS打包,对于前端开发来说,也是一个非常不错的工具:

       è¿™æ˜¯ä¸€ä¸ªéžå¸¸ä¸“业的WebIDE开发工具,Jetbrains公司的产品,被誉为“Web前端开发神器”、“最智能的JavaScriptIDE”,除了基本的智能补全、代码高亮、语法提示等常见功能,这个软件还支持代码分析与重构、联想查询、单元测试等高级功能,因此在开发效率上更高,也更适合大型项目,对于多人协作的前端开发来说,是一个非常不错的选择:

       WebStorm

       å’Œidea同属于jetbrains公司开发的,它是旗下一款JavaScript开发工具,被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScriptIDE”等。

       æ—©èµ·ä½œä¸ºä¸€ä¸ªæ’件可以集成与Eclipse中来开发前端,现在已经独立出来,也是我最早接触js所使用的一款开发工具,如果熟悉了Eclipse快捷键的童鞋可以快速上手。

       ä¸€æ¬¾ä»£ç ç¼–辑器,借助丰富的插件资源,可以扩展成强大的前端开发工具,和IDE相比,属于一款轻量级的,启动特别快。

       Atom

       ä½œä¸ºå¼€æºè€å¤§å“¥GitHub出的一款代码编辑器,和上面那个比较而言,插件略少,但和GitHub无缝结合,尤其是markdown编写,界面也很漂亮。

       TextMate是Mac下的著名的文本编辑器软件,与BBedit一起并称苹果机上的emacs和vim。尤其适合程序员使用,可以定制许多贴心使用的功能。

       Emacs即EditorMACroS(宏编辑器),是一种强大的文本编辑器。Emacs使用了EmacsLisp这种有着极强扩展性的编程语言(它的核心是一个EmacsLisp解释器),并实现了文本编辑支持等的扩展。

       Notepad++是Windows操作系统下的一套文本编辑器(软件版权许可证:GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。

       VSC-VSCode

       è½»é‡å¿«é€Ÿï¼Œé«˜é¢œå€¼ï¼Œç¤¾åŒºå¼€æºï¼Œä¸°å¯Œæ‰©å±•ï¼Œå¾®è½¯æ”¯æŒ

       è¿˜æœ‰è¶…好用的远程开发(vscoderemote)和协作(liveshare)支持

       HTML通常会和JavaScript、CSS同时出现。三者均是前端开发最常用到的。目前最常用到的HTML其实就是HTML5。常用的前端编程软件有HBuilder、SublimeText等等。

       HBuilder是一款免费的国产前端开发工具,编者用的就是HBuilder,对于小白和英语不太好的前端开发者这是一款难得的IDE。对代码自动补全方面简直是强大到没朋友。强力推荐。

       SublimeText是一个轻量级的编辑器,不端支持前端的html,js,css。还支持觉得多数的后端语言,比如C语言、java、python等。sublimetext的强大之处是支持各种插件而且快捷键非常好用,可以极大的提高开发效率。缺点是代码提示方面不如Hbuilder。

       å¾ˆé«˜å…´èƒ½å›žç­”你的问题,作为一个后端开发,也曾经开发过前端,也用过很多前端开发工具。

       1.sublimetext用着确实不错,但是代码开发提示不强,平时用着文本编辑器还是可以的。

       2.hbuild+用了一段时间各种不适用,最后就卸载了。

       3.vscode用着一段时间写vue,需要安装插件,而且提交代码用感觉不方便,把不想提交的最后提交了,导致代码冲突,也许是因为自己用不熟。

       4.webstorm推荐使用,代码智能提示,而且提交代码方便。

       æ— è®ºæ˜¯Python、Java、javascript,当我们选择一款开发工具时,很多人都会首先想到jetbrain全家桶,Webstorm、IDEA、Pycharm....不得不说,jetbrain在开发工具方面真的是颇有心得、炉火纯青。

       ä½†æ˜¯ï¼Œå¦‚果做前端开发,我认为除了jetbrain的webstorm,还有很多选择,而其中我最为推荐的当属VSCode,下面就来介绍一下。

       VSCode

       å¾®è½¯åœ¨å¼€å‘工具领域已经有了多年积淀,而VSCode有时微软结合了visualstudio和其他开发工具,不断改进、优化推出的一款免费开发工具。

       å¯ä»¥è¯´VSCode是当下最为热门的开发工具之一,对比于eclipse、IDEA这些老牌开发工具,微软对于VSCode的改变更为大胆创新,已经处于领头羊的地位。每年微软开发者大会,都会对VSCode进行大幅度的创新,经过多年的优化,VSCode已经让很多开发者爱不释手。

       é¦–先说一下它几个为人熟知的优点,

       é¦–先说一下轻量化,我觉得仅凭这一点,就足以让jetbrain全家桶汗颜。无论是webstorm、还是IDEA,最令人痛苦的就是打开过程,臃肿、漫长,加载工程项目和配置项需要多大几分钟,令人无法忍受。而VSCode则不同,它更像一个编辑器,能够秒级打开,速度堪比UE、notepad++这些文本编辑器。

       å…¶æ¬¡è¯´ä¸€ä¸‹ä¸°å¯Œæ’件,丰富的插件造就了VSCode完整的生态,“你想要的,这里都有”,无论是标签样式还是DEBUG或者功能增强,VSCode都有非常多热门的插件,使得你的开发效率大大提升,当然,前端需要的那些优质插件这里都有。

       å…¶å®žï¼Œè®©æˆ‘转向VSCode并非上述这两点,而是远程开发。

       æˆ‘觉得这是微软大胆创新和引领者角色必然的产物,让很多其他开发工具很难望其项背。

       æœ‰äº†VSCode远程开发功能,我们可以实时同步本地和服务器代码,不需要再去复杂的配置远程服务器,对于项目管理也非常方便。

       WebStorm和PS

       å°¤å…¶PS,平时生活中也需要用到,挺方便的

       å–œæ¬¢ç”¨webstorm,atom和vscode,sublimetext都装了,几乎只用webstorm,atom界面是漂亮,也是我第一个下载安装的,装了各种插件,那时初学,感觉提示不全,还有就是插件安装了几个后开机明显变好慢,无奈下了webstorm,感觉很爽

       GooglePageSpeedInsights可以为网站生成性能报告,它在移动设备和桌面设备上都是免费的。并且还给出了影响页面加载速度的原因,并为这些问题提供了解决方案。网站速度按照分进行划分,其中:

       2.PingdomWebsiteSpeedTest

       PingdomWebsiteSpeedTest可以全面分析影响页面Web速度的因素。此外,还可以查看网站在亚洲、欧洲等多个不同的地理位置的性能信息。

       3.WebPagetest

       WebPagetest是AOL开发的一款在线的免费性能评测网站,从全球多个地点运行免费网站速度测试。可以运行简单的测试或执行高级测试,包括多步骤事务、视频捕获、内容阻塞等等。还将依据测试结果提供丰富的诊断信息,包括资源加载瀑布图,页面速度优化检查和改进建议,会给每一项内容一个最终的评级。

       4.GTmetrix

       GTmetrix是一个类似于pingdom的工具,可以快速轻松地测试网站速度。它主要有PageSpeed和YSlow两部分组成,并提供相应的得分数据,能够真实的反应出网站的性能,并且会提供可行性建议来帮助改善网站性能。

       5.KeycdnTool

       KeycdnTool是一个在全球不同地点的网站速度测试工具。它允许测试任何页面的性能。返回的结果将提供请求、内容大小和加载时间等详细信息。此外,还有一个完整的瀑布图,详细说明了每个资源的加载时间和HTTP头。

       6.GiftOfSpeed

       GiftofSpeed是一款免费网站载入速度测试工具,可以在上面获得网站综合性能信息,它能够展示网站加载时间以及评估网站有哪些需要改进的地方,并给予一个客观的综合评分。

       GiftofSpeed的测试结果以瀑布流展示,可以很容易看到网站加载速度,每一项资源的的载入顺序、大小与响应时间的长短,方便了解网站的各项载入资源。此外,它还提供了载入时间最长的内部文件以及外部文件,从而分析出是由哪些因素影响了你网站的载入速度,就可以专门针对这些载入时间较长的元素进行优化,从而最大限度提升网站载入速度。

       7.Pagelocity

       Pagelocity是一个网站分析性能测试工具。这个工具也提供了追踪竞争对手的能力。代码检视图在类似工具中是独一无二的。如果想知道TTFB和图形化DOM元素等,都能通过这项工具获取到。

       8.SucuriLoadtimeTester

       SucuriLoadTimeTester是一个网站分析性能测试工具,它用不同的颜色表示网速快慢,可以很直观地看出测试网站在不同国家的运行速度。绿色表示畅通,没有颜色的普通数字表示一般,黄色表示中等偏慢,红色表示缓慢。

       9.GEEKFLARE

       GEEKFLARE这是一套免费的性能测试工具,用于测试网站的DNS、安全性、性能、网络和SEO等问题。

       .Dareboost

       DareBoost是一个免费网站速度测试和网站分析工具。它提供超过种不同的检查项目用以分析你的网站的速度。可以测试桌面端与行动页面、Firefox与Chrome和五个节点的速度差异。

SpringBoot整合Activiti工作流(附源码)

       依赖:

       在新建springBoot项目时勾选activiti,或在已建立的springBoot项目中添加以下依赖:

       数据源和activiti配置:

       在activiti的默认配置中,process-definition-location-prefix指定activiti流程描述文件的前缀,启动时,activiti将自动寻找此路径下的文件并部署。suffix为String数组,表示描述文件的默认后缀名。

       springMVC配置:

       配置静态资源和直接访问页面,采用thymeleaf依赖解析视图,主要采用异步方式获取数据,通过angularJS进行前端数据处理与展示。

       使用activiti:

       配置数据源和activiti后,启动项目,activiti服务组件自动加入到spring容器中。thinkphp 小商城源码使用注入方法直接访问。在非自动配置的spring环境中,可通过指定bean的init-method配置activiti服务组件。

       案例:请假流程示例:

       1. 员工申请请假

       设置请假信息,完成申请时传入参数。

       2. 老板审批请假

       (1) 查询审批任务

       老板查看需审批的请假任务,设置VacTask对象用于页面展示。

       (2) 完成审批

       传入审批结果和任务ID。根据结果进行流程跳转。

       3. 查询请假记录

       在history表中查询已完成的请假记录,设置VO对象展示。

       4. 前端展示与操作

       (1) 审批列表与操作

       展示审批列表及操作示例,完成一个springBoot与activiti6.0整合示例项目的说明与代码。

       完整项目代码参考:

       推荐阅读:

       1. SpringBoot内容聚合

       2. 设计模式内容聚合

       3. Mybatis内容聚合

       4. 多线程内容聚合

研发必会-异步编程利器之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、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()方法,看不到异常信息。使用的时候,注意一下,考虑是否加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...

相关栏目:百科