实现Spring中的任务调度及异步执行
首先要端正一下本人的态度,开发了很长时间的Java Web项目,寄托于Spring MVC的架构,多数时间都是在处理业务逻辑问题,所以我个人单纯地认为Web开发,多线程的应用场景应该不多,能不用尽量不用(当然,有这样的想法,那也是我个人多线程运用不多,理解不是很深刻,而且多线程并发操作需要面对和处理的问题很多,像共享资源上锁等)。但现在需要用到了,才明白多线程的应用场景是多么的重要。所以这几天开始在多线程方面进行了研究,下面总结我这几天的理解和认知。 先阐述下,我在Web项目开发中为什么会用到多线程?项目背景是这样的:门户网站中添加了页面静态化的功能,那对于静态页面内容的更新,采用什么更新策略呢?我用的是最简单的方法,启用定时任务,每隔一段指定的时间清空静态页面文件所在的目录(关于这点,如果有更好做法或建议的,请指点一哈),在项目开始运行时,就启用定时任务开始工作。显然,启用定时任务,可以简化认为开始一个新的线程,来专门执行删除静态页面文件的操作。 为了实现上述的功能,不需要我们从最原始的多线程编程方式入手,通过网上的搜索,大致有三种解决方案。如下: 使用Quartz开源任务调度框架。 使用JDK Timer类。 使用Spring“原生态”的Spring Task。 针对前两种方法,Spring都给予了完美的封装和整合。那么关于Quartz和JDK Timer是什么,做什么,怎么用