转载:http://littlefermat.blog.163.com/blog/static/59771167200928115047810/
熟悉编写JavaScript的人,都习惯在页面写入setTimeOut来实现web页面的定时监控或事务处理。但是如何在Java服务端来实现这样一个监控机制呢?一般大家都会想到线程。但是一直以来,都没有亲身动手实践过。趁着工作间隙,自己也搬出一段代码来,与大家一起分享线程编程的神奇魔力。
首先创建一个基本抽象类SchedThread,代码内容如下:
- package com.test;
- /**
- * 基于Java线程实现后台定时监控 <p/> Created: Mar 26, 2008 10:08:43 <p/>
- * <h4>http://tailsherry.javaeye.com</h4>
- * <p/>
- *
- * @author TailSherry
- */
- public abstract class SchedThread
- {
- protected static final long NEVER = Long.MAX_VALUE;
- // 定义一个线程锁,保证当前只有一个工作在操作中
- private final Object lock = new Object();
- // 定义一个Thread变量
- private Thread thread;
- // 控制线程循环的开关
- private boolean active = true;
- // 定义一个毫秒级的时间变量,指示何时执行下一个操作
- private long nextTime;
- /**
- * 定义个一个抽象的方法用来获取下一个执行操作的时间,可使用NEVER
- */
- protected abstract long getNextTime();
- /**
- * 定义一个抽象的方法,让子类来定义具体的工作过程
- */
- protected abstract void executeWork();
- protected String getName()
- {
- return getClass().getName();
- }