首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

死磕 java线程系列之线程池深入解析——未来任务执行流程

注:java源码分析部分如无特殊说明均基于 java8 版本。 注:线程池源码部分如无特殊说明均指ThreadPoolExecutor类。...简介 前面我们一起学习了线程池中普通任务的执行流程,但其实线程池中还有一种任务,叫作未来任务(future task),使用它您可以获取任务执行的结果,它是怎么实现的呢?...问题 (1)线程池中的未来任务是怎么执行的? (2)我们能学到哪些比较好的设计模式? (3)对我们未来学习别的框架有什么帮助? 来个栗子 我们还是从一个例子入手,来讲解本章的内容。...submit()方法 submit方法,它是提交有返回值任务的一种方式,内部使用未来任务(FutureTask)包装,再交给execute()去执行,最后返回未来任务本身。...总结 (1)未来任务是通过把普通任务包装成FutureTask来实现的。

50010

Java定时任务

java中一个完整定时任务需要由Timer、TimerTask两个类来配合完成。 API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务。...但是由于每一个Timer对象对应的是单个后台线程,用于顺序执行所有的计时器任务,一般情况下我们的线程任务执行所消耗的时间应该非常短,但是由于特殊情况导致某个定时器任务执行的时间太长,那么他就会“独占”计时器的任务执行线程...对于这个线程任务,如果我们不将该任务停止,他会一直运行下去。...Exception in thread “Timer-0” java.lang.RuntimeException at com.chenssy.timer.TimerTest04$1.run(TimerTest04....java:25) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java

2K20
您找到你想要的搜索结果了吗?
是的
没有找到

java定时任务

引言:知易行难 这里我推荐使用第一种,Spring定时任务,简单又简介,高效 一、Spring定时任务 基于springboot创建一个项目,使用定时任务很简单 俩步即可实现 1、启动类上加注解@EnableScheduling...注解开启定时任务 2、方法上加注解@Scheduled设置任务执行时间 示例 默认是单线程的定时任务 @Scheduled(fixedDelay =5*1000 ) // 每隔五秒执行一次 单位毫秒...专有符号:在Spring定时任务中,除了问号,其他都不支持! ?...拓展一下: @Scheduled()的8个参数的意思 1、cron 接受一个cron表达式 2、zone 时区,接受一个java.util.TimeZone#ID 默认是一个空字符串,取服务器所在地的时区...// 参数1 timerTask对象 定时任务对象 // 参数2 任务什么时候启动 // 参数3 执行任务的时间间隔 timer.schedule(new TimerTask

20430

Java 定时任务

还没真正的遇到使用定时任务的场景,不管怎么说先学起来 1. 定时任务 很多情况下任务并非需要立即执行,而是需要往后或定期执行,这不可能人工去操作,所以定时任务就出现了。...JVM 的运行纳秒数,并不受同步影响,适用于计算准确的时间差 但计算当前日期还是要使用 currentTimeMillis 的格林威治时间,而 nanoTime 计算 JVM 运行时间不准确 3. java.util.Timer...ScheduledExecutorService java.util.concurrent中的工具类,是一个多线程的定时器 4.1 使用 public class ExecutorSchedule {...执行器就是定时任务,而调度中心则负责管理调用这些定时任务,调度中心也可以存储定时任务通过脚本形式(Java 是 Grovvy)免编译地实时下发到各服务中执行。...在需要定时任务的服务中 引入依赖、添加配置、创建定时任务 6.3.1 依赖 <!

2.9K30

Java未来已来

平台的首席架构师 Mark Reinhold 做了The Future of Java is Today的演讲, 回顾了最近Java的几个版本的新的功能,Java的每年两次的发布周期, 澄清了关于发布流程和...Java版本的几个误区,最后花了很大的篇幅介绍了未来Java几个令人非常期待的几个孵化中项目,可以为Java带来更好的生产力、性能和可扩展性。...我整理了这四个项目相关的知识,你可以提前了解到Java未来的这些酷炫的特性。 ?...Java各版本的发布时间点和LTS版本 Java各版本的发布时间点和LTS版本 Mark Reinhold 我不多介绍了, 之前要了解Java未来动向看Java之父James Gosling, 他离开...Project Amber 提供面向生产力的Java特性, 比如字符串字面值、switch表达式、模式匹配、record等 这个项目包含很多Java语言特性的新功能。

74420

Java: 未来已来

在10月22的 Oracle Codeone大会上,Java平台的首席架构师 Mark Reinhold 做了The Future of Java is Today的演讲, 回顾了最近Java的几个版本的新的功能...,Java的每年两次的发布周期, 澄清了关于发布流程和Java版本的几个误区,最后花了很大的篇幅介绍了未来Java几个令人非常期待的几个孵化中项目,可以为Java带来更好的生产力、性能和可扩展性。...我整理了这四个项目相关的知识,你可以提前了解到Java未来的这些酷炫的特性。 ?...Java各版本的发布时间点和LTS版本 Mark Reinhold 我不多介绍了, 之前要了解Java未来动向看Java之父James Gosling, 他离开Oracle之后想了解Java的动向就看...这个项目包含很多Java语言特性的新功能。

45610

Java : 未来已来

Mark Reinhold 做了The Future of Java is Today的演讲, 回顾了最近 Java 的几个版本的新的功能,Java 的每年两次的发布周期, 澄清了关于发布流程和 Java...版本的几个误区,最后花了很大的篇幅介绍了未来 Java 几个令人非常期待的几个孵化中项目,可以为Java带来更好的生产力、性能和可扩展性。...我整理了这四个项目相关的知识,你可以提前了解到 Java 未来的这些酷炫的特性。 ?...Mark Reinhold 我不多介绍了, 之前要了解Java未来动向看Java之父James Gosling, 他离开Oracle之后想了解Java的动向就看 Mark Reinhold。 ?...Project Amber 提供面向生产力的 Java 特性, 比如字符串字面值、switch 表达式、模式匹配、record 等。这个项目包含很多Java语言特性的新功能。

54020

java定时任务实现的几种方式注解(JAVA定时任务)

我这里把定时任务的实现收集整理了一些方法,希望可以帮到刚开始做定时任务的同学,写得不对的地方请指正。...我这里把定时任务的实现收集整理了一些方法,希望可以帮到刚开始做定时任务的同学,写得不对的地方请指正。...一 Java 基本的定时任务,总结方法有三种: 1.1 创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果; 1.2 用Timer...是从的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式,相比于上两个方法,它有以下好处: 相比于Timer的单线程,它是通过线程池的方式来执行任务的...: Spring的ScheduledTimerTask定义了一个定时器任务的运行周期,遗憾的是,你可以指定任务执行的频度,但你无法精确指定它何时运行,这就需要用到第二种Quartz进行任务调度;

2.2K10

java定时任务接口ScheduledExecutorService

一、ScheduledExecutorService 设计思想 ScheduledExecutorService,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,...任务是并发执行,互不影响。...需要注意,只有当调度任务来的时候,ScheduledExecutorService才会真正启动一个线程,其余时间ScheduledExecutorService都是出于轮询任务的状态。...由此可见,ScheduleAtFixedRate 是基于固定时间间隔进行任务调度,ScheduleWithFixedDelay 取决于每次任务执行的时间长短,是基于不固定时间间隔进行任务调度。...参考文献 : http://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/ 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

98520

谈谈Java任务的并行处理

无处不在的并行 Java的垃圾回收器,我们可以看到每一代版本的更新,伴随着GC更短的延迟,从serial到cms再到现在的G1,一直在摘掉Java慢的帽子;消息队列从早期的ActiveMQ到现在的kafka...如何并行 我觉得并行的核心在于"拆分",把大任务变成小任务,然后利用多核CPU也好,还是多节点也好,同时并行的处理,Java历代版本的更新,都在为我们开发者提供更方便的并行处理,从开始的Thread,到线程池...,启动过多的线程只会带来更多的线程上下文切换;同时线程处理完一个任务就终止了,也是对资源的浪费;另外可以看到主线程不知道何时子任务已经处理完了,需要做额外的处理;所有Java后续引入了线程池。...,然后将每个子任务的结果合并起来生成整体结果;相关代码如下: public class ForkJoinTest extends java.util.concurrent.RecursiveTask<Long...,可以看到Java一直在为提供更方便的并行处理而努力。

1.4K00

SpringBoot开发azkaban Java类型任务

HadoopShell:这和Command一样也是命令类型,只不过可以和Hadoop集群通信 JavaJava任务 hadoopJava:也是一种Java类型,可以和hadoop集群通信,可以通过运行...,官方网站地址:http://xiaoshuai.github.io/azkaban-gh-pages/#new-hive-type 开发Java类型任务 接下来就来开发一个Java类型的任务,上传azkaban...到这里,azkaban java 类型的任务就算开发完了,接下来,需要打包部署到 azkaban上进行运行。...第三步,编写 job 任务文件,后缀名为 .job,内容如下: # 指定任务类型为java任务 type=javaprocess # 指定启动类 java.class=com.tsmyk.azkaban.AzkabanApplication...到这里,一个azkaban简单的java类型的任务就开发完了,当然还可以在界面设置调度周期等。

79430

Java定时任务调度详解

JDK原生定时工具:Timer 定时任务调度:基于给定的时间点、给定的时间间隔、给定的执行次数自动执行的任务。...Timer位于java.util包下,其内部包含且仅包含一个后台线程(TimeThread)对多个业务任务(TimeTask)进行定时定频率的调度。...delay:执行task任务前的延时时间,单位是毫秒 很显然,通过上述的描述,我们可以实现: 延迟多久后执行一次任务;指定时间执行一次任务;延迟一段时间,并周期性执行任务;指定时间,并周期性执行任务;...前面已经提及到Timer背后是一个单线程,因此Timer存在管理并发任务的缺陷:所有任务都是由同一个线程来调度,所有任务都是串行执行,意味着同一时间只能有一个任务得到执行,而前一个任务的延迟或者异常会影响到之后的任务...Quartz是纯Java实现,而且作为Spring的默认调度框架,由于Quartz的强大的调度功能、灵活的使用方式、还具有分布式集群能力,可以说Quartz出马,可以搞定一切定时任务调度!

1.9K71

SpringBoot开发azkaban Java类型任务

HadoopShell:这和Command一样也是命令类型,只不过可以和Hadoop集群通信 JavaJava任务 hadoopJava:也是一种Java类型,可以和hadoop集群通信,可以通过运行...hadoopJava作业来创建大多数Hadoop作业类型,例如Pig,Hive等 Pig:pig脚本任务 Hive:支持 执行hiveSQL 任务 在官方网站中,每种任务类型都有相应的例子,任务的配置也进行了详细的说明...,官方网站地址:http://xiaoshuai.github.io/azkaban-gh-pages/#new-hive-type 开发Java类型任务 接下来就来开发一个Java类型的任务,上传azkaban...,后缀名为 .job,内容如下: # 指定任务类型为java任务 type=javaprocess # 指定启动类 java.class=com.tsmyk.azkaban.AzkabanApplication...到这里,一个azkaban简单的java类型的任务就开发完了,当然还可以在界面设置调度周期等。 本文首发于公众号【Java技术编程】,欢迎关注。

92800

Java中的定时任务

Java 系统中主要有三种方式来实现定时任务: Timer和TimerTask ScheduledExecutorService 三方框架 Quartz 下面我们一个个来看。...固定频率:任务的往后每一次执行时间都在任务提交的那一刻得到了确定,不论你上次任务是否意外延时了,定时定点执行下一次任务。...整体来说,ScheduledExecutorService 区别于 Timer 的地方就在于前者依赖了线程池来执行任务,而任务本身会判断是什么类型的任务,需要重复执行的在任务执行结束后会被重新添加到任务队列...三方框架 Quartz 除了上述两种定时任务框架外,Java 生态圈还存在一种开源的三方框架,他就是 Quartz。...---- 每篇文章用到的所有案例代码素材都会上传我个人 github https://github.com/SingleYam/overview_java

1.8K20

java定时任务之quartz

一、Quartz介绍   在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等。...Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合,功能灰常强大,轻轻松松就能与Spring集成,使用方便。...二、Quartz中的概念   主要有三个核心概念:调度器、任务和触发器。三者关系简单来说就是,调度器负责调度各个任务,到了某个时刻或者过了一定时间,触发器触动了,特定任务便启动执行。...概念相对应的类和接口有:   1)JobDetail:望文生义就是描述任务的相关情况;   2)Trigger:描述出发Job执行的时间触发规则。...3)Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail要注册到Scheduler中才会生效,也就是让调度器知道有哪些触发器和任务,才能进行按规则进行调度任务

48910
领券