1、普通thread实现
:是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。
2、timertask
:启动和去取消任务时可以控制,第一次执行任务时可以指定你想要的delay时间。
3、scheduledexecutorservice实现
:最理想的定时任务实现方式,相比于timer的单线程,它是通过线程池的方式来执行任务的,可以很灵活的去设定第一次执行任务delay时间,提供了良好的约定,以便设定执行的时间间隔等。
希望能帮到你。
JAVA中定时自动完成任务的实现要用到JAVA中的定时器TimerTask和监听器 听起来貌似有点困难但是实现起来还是比较容易的!纸老虎~~!
下面的列子很详细 是关于定时向服务器上传(也可以是其他的动作这是看需要关于上传我博客有写过可以参考)文件的列子简单的 步就可以实现
首先创建动作bean
package sun time
public class UploadFile{
/**
*实现上传的代码s省略 可以看下我下面的 篇日志
__haiming/blog/static/ / 使用 *** arupload 实现上传下载[有例子]
__haiming/blog/static/ / 使用Struts 多文件上传
*/
public void upload()
{
System out println( 系统自动的上传文件了 )
}
}
创建定时器MyTaker并完成相应的功能
package sun time
import java util Calendar
import java util TimerTask
import javax servlet ServletContext
public class MyTaker extends TimerTask {
private static boolean isRun = false
private ServletContext context
private Calendar ca = Calendar getInstance()
public MyTaker(ServletContext context)
{
ntext = context
}
@Override
public void run() {
if(!isRun){
if( ==ca get(Calendar MINUTE)){
isRun = true
context log( 正在执行所加载的任务 )
UploadFile uf= new UploadFile()
uf upload()
isRun =false
context log( 任务顺利完成 )
}
}
else
{
System out println( 任务还没有执行完毕 )
}
}
}
创建监听器ContextListener
package sun time
import javax servlet ServletContextEvent
import javax servlet ServletContextListener
import sun time MyTaker
import java util *
public class ContexListener implements ServletContextListener{
private Timer timer = null
@Override
public void contextDestroyed(ServletContextEvent event) {
timer cancel()
event getServletContext() log( 任务列表已经销毁了 )
}
@Override
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true)
event getServletContext() log( 服务器已经启动了 )
timer schedule(new MyTaker(event getServletContext()) )///每隔多长时间检查扫描一次
event getServletContext() log( 已经加载了任务的列表 )
}
}
最后一步就是在web xml中配置监听
<! Java定时器 >
<listener>
<listener class>sun time ContexListener</listener class>
lishixinzhi/Article/program/Java/hx/201311/26450
Java 基本的定时任务,总结方法有三种:
1 创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果;
2 用Timer和TimerTask与第一种方法相比有如下好处:
当启动和去取消任务时可以控制
第一次执行任务时可以指定你想要的delay时间
3 用ScheduledExecutorService是从的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式,相比于上两个方法,它有以下好处:
相比于Timer的单线程,它是通过线程池的方式来执行任务的
可以很灵活的去设定第一次执行任务delay时间
提供了良好的约定,以便设定执行的时间间隔
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)