JFinal - scheduler 插件做定时任务
我在项目中遇到一个需求:服务运行期间,数据库要定期去监测某表并且更新。
正好项目是使用 jfinal 做的,于是就用了 jfinal-scheduler 插件来解决(jfinal-scheduler 可以用来做定时任务):
配置插件,在自定义的 JFinalConfig 类中引入此插件:
/**
* 配置插件
*/
public void configPlugin(Plugins me) {
// ...
// 定时器插件
SchedulerPlugin sp = new SchedulerPlugin();
Runnable task = new Task();
sp.fixedRateSchedule(task, 60);
me.add(sp);
// ...
}
完善线程
public class Task implements Runnable{
@Override
public void run() {
// DML操作
}
}
完成上述工作之后,我启动服务器,发现在 DML 操作之处必现线程阻塞。然而我将这段 DML 操作放到 Controller 中是能够正常执行并查出数据的。
后来发现原因在这里:
public class SchedulerPlugin implements IPlugin {
// ...
private final ScheduledThreadPoolExecutor taskScheduler;
public SchedulerPlugin() {
this(getBestPoolSize(), null);
}
public ScheduledFuture<?> fixedRateSchedule(Runnable task, int periodSeconds) {
return taskScheduler.scheduleAtFixedRate(task, 0, periodSeconds, TimeUnit.SECONDS);
}
// ...
}
在插件调用 fixedRateSchedule(...) 的时候,会调 ScheduledThreadPoolExecutor.scheduleAtFixedRate(...),第二个参数的意思是第一次启动线程会在多少秒后执行,因为源码中这个参数是 0,也就是马上执行的意思,然而此时数据库还没有连上呢,查询操作自然就出异常了。我把 0 改成了 60,果然,1分钟后,线程启动,运行正常。
用到的源码和jar包:
myaniu-jfinal-scheduler-master.zip
JFinal - scheduler 插件做定时任务的更多相关文章
- [osg]osgDB的加载机制,使用3DS插件做参考(转,整理现有osgDB资料)
参考:http://blog.sina.com.cn/s/blog_7cdaf8b60102uzu3.html http://blog.csdn.net/wang15061955806/article ...
- 定时任务-----Springboot中使用Scheduled做定时任务----http://www.cnblogs.com/lirenqing/p/6596557.html
Springboot中使用Scheduled做定时任务---http://www.cnblogs.com/lirenqing/p/6596557.html 已经验证的方案: pom文件加入依赖 < ...
- SpringBoot之使用Scheduled做定时任务
定时任务有好多开源框架比如Quartz,@Scheduled是Spring的一个定时任务注解,通过注解配置就能够轻量级的定时任务,简单方便. 一.@Scheduled注解介绍 这里先贴上@Schedu ...
- Asp.Net Core 使用Quartz基于界面画接口管理做定时任务
今天抽出一点点时间来造一个小轮子,是关于定时任务这块的. 这篇文章主要从一下几点介绍: 创建数据库管理表 创建web项目 引入quarzt nuget 包 写具体配置操作,实现定时任务处理 第一步:创 ...
- 使用jquery的imagecropper插件做用户头像上传 兼容移动端
在移动端开发的过程中,或许会遇到对图片裁剪的问题.当然遇到问题问题,不管你想什么方法都是要进行解决的,哪怕是丑点,难看点,都得去解决掉. 图片裁剪的jquery插件有很多,我也测试过很多,不过大多数都 ...
- 用bootstrap的tab插件做一个图层切换效果(感觉会误导淫们,大家当乐子看吧)
小伙伴们啊,我JS真的是个渣渣,所以总想要偷懒,于是为了实现效果就把tab插件给改了(各位大神轻拍啊,我是小白,很纯洁滴,小心脏也很脆弱)…… 最近做的项目为了考虑以后的移动设备兼容性,所以用了Boo ...
- linux真正使用shell脚本做定时任务 关键的Nohup
网上有很多的文章教大家使用定时任务,所以别的废话我就不多说了 我这里直接有SH来做定时,只是有一点大家不知道,一定要用Nohup,否则用户退出终端以后,SH任务会被自动终止掉 假设有一 tash.sh ...
- springboot使用validation 插件做数据校验
不多说废话. 首先,我们需要在入参实体对象中,使用注解,控制 @Datapublic class UpdateShufflingRequest { private String shuffling_l ...
- jenkins中使用tfs插件做增量的版本发布部署
一 配置介绍 使用jenkins的tfs插件进行,源码的下载,编译,打包的操作,然后使用windows的批处理命令,在局域网内(或者本机)把打包的release包,删除掉web.config,然后靠配 ...
随机推荐
- C# DataTable中根据某Column值(不重复)获取该值所在行
System.Data.DataTable dt = new System.Data.DataTable(); dt.PrimaryKey = new System.Data.DataColumn[] ...
- SQL用先进先出存储过程求出库数量
create table t( id ,), name ),--商品名称 j int, --入库数量 c int, --出库数量 jdate datetime --入库时间 ) ,,'2007-12- ...
- CentOS手动编译安装gcc
最近尝试了fedora.ubuntu.mint.debian.opensuse等多种linux发行版,与CentOS比较之后还是感觉之前用的CentOS比较熟悉,比较习惯.现在CentOS的最新版本为 ...
- matlab GUI界面编程总结
去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...
- .net之工作流工程展示及代码分享(四)主控制类
现在应该讲主控制类了,为了不把系统弄得太复杂,所以就用一个类作为主要控制类(服务类),作为前端.后端.业务逻辑的控制类. WorkflowService类的类图如下: 该类的构造函数: public ...
- lisp等
- photoshop学习入门:选择和处理
昨天花了一天时间看了李涛的视频<高手之路>入门的24集,累得连写工作日报的力气都没了,19点就睡.今天4点起来,补一下记录. photoshop是个位图处理工具(别的花里胡哨的功能忽略)— ...
- Android学习计划
书目 疯狂Android讲义 Android开发艺术探索 Android群英传 Android 源码设计模式解析与实战 Android内核剖析 深入理解 Android自动化测试 代码 信念 坚持.坚 ...
- 阿里巴巴矢量图标的使用Demo
一.html网页的使用步骤: 1. 登录进入阿里巴巴矢量图标库中,选择自己喜欢的图标,放到购物车,http://www.iconfont.cn/plus/manage/index?manage_typ ...
- 勇者斗恶龙UVa11292 - Dragon of Loowater
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=s ...