Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by long initialDelay
踩了定时线程池的坑,导致公司损失几千万,血的教训-阿里云开发者社区
ScheduledExecutorService 大家好呀,上周我们公司由于定时线程池使用不当出了一个故障,几千万的单子可能没了 给兄弟们分享分享这个坑,希望兄弟们以后别踩! 业务中大量的使用定时线程池(ScheduledExecutorService)执行任务,有时候会忽略掉 Try/Catch 的异常判断 当任务执行报错时,会导致整个定时线程池挂掉,影响业务的正常需求 我们来模仿一个生产的例子: 合作方修改频率低且合作方允许最终一致性 我们有一个定时任务每隔 60 秒去 MySQL 拉取全量的 合作方 数据放至 合作方缓存(本地缓存) 中 当客户请求时,我们去缓存中拿取合作方即可 这样的生产例子应该存在于绝大数公司,代码如下: 运行上述样例,我们会发现程序不停止,输出一遍 Load start!,一直在运行,但后续不输出 Load start! 这个时候我们可以确认:异常确实导致当前任务不再执行 1、为什么任务报错会影响定时线程池? 2、定时线程池是真的挂掉了嘛?
JUC第二十一讲:JUC线程池:ScheduledThreadPoolExecutor详解_程序员 jet_qi的博客-CSDN博客
JUC线程池:ScheduledThreadPoolExecutor详解 本文是JUC第二十一讲,JUC线程池: ScheduledThreadPoolExecutor详解。在很多业务场景中,我们可能需要周期性的运行某项任务来获取结果,比如周期数据统计,定时发送数据等。在并发包出现之前,Java 早在1.3就提供了 Timer 类(只需要了解,目前已渐渐被 ScheduledThreadPoolExecutor 代替)来适应这些业务场景。随着业务量的不断增大,我们可能需要多个工作线程运行任务来尽可能的增加产品性能,或者是需要更高的灵活性来控制和监控这些周期业务。这些都是 ScheduledThreadPoolExecutor 诞生的必然性。 请带着这些问题继续后文,会很大程度上帮助你更好的理解ScheduledThreadPoolExecutor。 ScheduledThreadPoolExecutor要解决什么样的问题? 定时任务 ScheduledThreadPoolExecutor相比ThreadPoolExecutor有哪些特性?
49天精通Java,第44天,一文弄懂Java线程池 + Runnable多线程 + 调用WebService接口
大家好,我是哪吒。 根据接口文档,调用第三方webservice接口,拼接入参,处理回参。 RPC调用Webservice接口是一种远程调用的方式,通过指定Webservice接口的调用地址、命名空间、调用的方法名调用远程接口获取结果。 通过 ExecutorService 新建线程池; 定义thread类,请求webservice接口; 1、创建方式 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) 2、核心参数 corePoolSize :...
定时任务实现方案总结_yangnk42的博客-CSDN博客
一、概述 定时任务的作用是在设定的时间和日期后自动执行任务,执行任务的周期既能是单次也能是周期性。 本文重点说明Timer、ScheduledThreadPoolExecutor、Spring Task、Quartz等几种定时任务技术方案。 二、Timer JDK自带的Timer是最古老的定时任务实现方式了。Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以安排任务“执行一次”或者定期“执行多次”。 在实际的开发当中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 核心方法: schedule(TimerTask task,long delay); schedule(TimerTask task, Date time); schedule(TimerTask task,long delay,long period); schedule(TimerTask task, Date firstTime , long period);...
ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明
我们继续总结学习Java基础知识,温故知新。 本文讲述 ScheduledThreadPoolExecutor 及 ThreadPoolExecutor。 我们并不推荐使用Executors去创建线程池,为了更好地控制和管理线程池,通过ThreadPoolExecutor或者ScheduledThreadPoolExecutor的方式去创建线程池。这两种方式可以根据具体的需求设置线程池的参数,例如核心线程数、最大线程数、队列类型等,以及自定义拒绝策略来处理任务无法执行的情况。 2.1 为什么不推荐使用Executors去创建线程池 newFixedThreadPool(固定线程数) newSingleThreadExecutor(单线程) 主要问题是堆积的请求处理队列可能会耗费非常大的内存,甚至OOM。线程数固定,任务多了之后容易堆积。 newCachedThreadPool(可缓存的线程池) newScheduledThreadPool(定时执行的线程池)...
调度线程池ScheduledThreadPoolExecutor源码解析-电子发烧友网
前言 ScheduledThreadPoolExecutor可以用来很方便实现我们的调度任务,具体使用可以参考调度线程池ScheduledThreadPoolExecutor的正确使用姿势这篇文章,那大家知道它是怎么实现的吗,本文就带大家来揭晓谜底。 实现机制分析 我们先思考下,如果让大家去实现ScheduledThreadPoolExecutor可以周期性执行任务的功能,需要考虑哪些方面呢? ScheduledThreadPoolExecutor的整体实现思路是什么呢? 答:我们是不是可以继承线程池类,按照线程池的思路,将任务先丢到阻塞队列中,等到时间到了,工作线程就从阻塞队列获取任务执行。 如何实现等到了未来的时间点就开始执行呢? 答:我们可以根据参数获取这个任务还要多少时间执行,那么我们是不是可以从阻塞队列中获取任务的时候,通过条件队列的的awaitNanos(delay)方法,阻塞一定时间。 如何实现 任务的重复性执行呢? 答:这就更加简单了,任务执行完成后,把它再次加入到队列不就行了吗。 源码解析 类结构图...
11.定时任务&定时线程池详解_苹水相峰的博客-CSDN博客
3.1 新增定时任务池 11.定时任务&定时线程池详解 当我们不用任务框架时,我们想自己写一个定时任务时,我们能想起那个工具类呢?Timer ?还有吗?不知道了,下面我们要讲下ScheduledThreadPoolExecutor,定时任务线程池,可以执行一次任务,还可以执行周期性任务。 1.0 ScheduledThreadPoolExecutor的用法 定时线程池的类的结构图如下: 从结构图上可以看出定时线程池ScheduledThreadPoolExecutor继承了线程池ThreadPoolExecutor,也就是说它们之间肯定有相同的行为和属性。 ScheduledThreadPoolExecutor常用发的方法如下: 1)schedule():一次行任务,延迟执行,任务只执行一次。 2)scheduleAtFixedRate():周期性任务,不不等待任务结束,每隔周期时间执行一次,新任务放进队列中. 3)scheduleWithFixedDelay():周期性任务,等待任务结束,每隔周期时间执行一次.
Xxl-job 一文读懂_xxljob 子任务_在奋斗的大道的博客-CSDN博客
目录 1.1 运用场景 数据备份 订单未支付则自动取消 定时爬取数据 定时推送信息 定时发布文章 定时生成报表 1.2 什么是定时任务 定时任务是指基于给定的时间点,间隔或者给定执行次数自动的执行程序。任务调度室系统的重要组成部分,而对于实时的系统,任务调度直接影响着系统的实时性。任务调度涉及多线程并发、运行时间规则定制与解析、线程池的维护等多项工作。 1.2.1 Java 实现定时任务三大方式 JDK自带 :JDK自带的Timer以及JDK1.5+ 新增的ScheduledExecutorService; Quartz :简单却强大的JAVA作业调度框架 Spring Task :可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多; JDK 自带的定时器实现 Timer类 这个类允许你调度一个java.util.TimerTask任务。主要有以下几个方法: schedule(TimerTask task, long delay) 延迟 delay 毫秒 执行。 public static void main(String[] args) { for...
定时任务详解_寻烟的衣袖的博客-CSDN博客
1、定时任务 在公司做项目时,经常遇到要用到定时任务的事情,但是对定时任务不熟练的时候会出现重复任务的情况,不深入,这次将定时任务好好学习分析一下 定时任务的原理 假如我将一个现场通过不断 轮询的方式去判断,就能实现定时任务功能 public class Task { public static void main(String[] args) { // run in a second final long timeInterval = 1000; Runnable runnable = new Runnable() { @Override public void run() { while (true) { System.out.println("Hello !!"); try { Thread.sleep(timeInterval); } catch (InterruptedException e) { e.printStackTrace(); } } } }; Thread thread = new Thread(runnable); thread.start(); } }...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with long
Contact long, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack