首页 > 编程 > Java > 正文

Java定时调用

2019-11-06 06:12:30
字体:
来源:转载
供稿:网友

(一)java代码中定时调用的三种方法:

方法一:使用thread创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。代码如下:

	public static void main(String[] args) {		final long timeInterval = 1000;		Runnable runnable = new Runnable() {			public void run() {				while (true) {					System.out.PRintln("方法一:循环调用 !!  时间=" + new Date() );					try {						Thread.sleep(timeInterval);					} catch (InterruptedException e) {						e.printStackTrace();					}				}			}		};		Thread thread = new Thread(runnable);		thread.start();	}

方法二:在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务。 

详解Timer地址,可查看调用时间       http://blog.csdn.net/chenssy/article/details/32703499

下面是简单代码:

	public static void main(String[] args) {		TimerTask task = new TimerTask() {			@Override			public void run() {				System.out.println("方法二:Timer定时调用 !!!  时间=" + new Date() );			}		};		Timer timer = new Timer();		long delay = 10000;		long intevalPeriod = 1 * 1000;		timer.scheduleAtFixedRate(task, delay, intevalPeriod);	}方法三:ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。下面是简单代码:

	public static void main(String[] args) {		Runnable runnable = new Runnable() {			public void run() {				System.out.println("方法三:ScheduledExecutorService定时调用 !!  时间=" + new Date() );			}		};		ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();		// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间		service.scheduleAtFixedRate(runnable, 5, 3, TimeUnit.SECONDS);	}

(二)java代码定时调用在spring中的例子:(下面代码为固定几分钟调用一次,百度文库定时调用http://wenku.baidu.com/view/a8ac2b71a8114431b80dd809.html)

编写类TimerManager:

public class TimerManager {	 public TimerManager() {		NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();		ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();		// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间		service.scheduleAtFixedRate(task, 5, 3, TimeUnit.SECONDS);	 }}

编写类NFDFlightDataTaskListener:

public class NFDFlightDataTimerTask extends TimerTask{	 private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);	 @Override	 public void run() {		  try {		      //在这里写你要执行的内容			  System.out.println("执行定时调用 !!  时间=" + new Date() );		  } catch (Exception e) {			  log.info("-------------解析信息发生异常--------------");		  }	 }}

编写类NFDFlightDataTaskListener:

public class NFDFlightDataTaskListener implements ServletContextListener {	 public void contextInitialized(ServletContextEvent event) {		  new TimerManager();	 }	 public void contextDestroyed(ServletContextEvent event) {	 }}

然后要在web.xml里面配置监听器:

  	<listener> 		<listener-class>com.cxy.timer.NFDFlightDataTaskListener</listener-class>	</listener>

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表