 任务调度可以实现指定的时间执行某个任务,比如每一分钟执行一次,指定时间执行一次。
任务调度可以实现指定的时间执行某个任务,比如每一分钟执行一次,指定时间执行一次。
MyTimeTask
package com.yyy.schedule;
import java.text.SimpleDateFormat;
import java.util.TimerTask;
public class MyTimeTask extends TimerTask {
	//重写run方法
		@Override
		public void run() {
			// TODO Auto-generated method stub
			
			System.out.println("当前任务的执行时间为:"+new SimpleDateFormat("HH:mm:ss").format(this.scheduledExecutionTime()));
			
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
}
TestTimerServlet
package com.yyy.servlet;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yyy.schedule.MyTimeTask;
/**
 * Servlet implementation class TestTimerServlet
 */
@WebServlet("/TestTimerServlet")
public class TestTimerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestTimerServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//创建一个定时器对象  
				Timer timer=new Timer();
				
				//从当前时间开始 每隔1秒钟调用一次任务,每次执行时间为上一次任务开始起向后推一个period间隔
				timer.scheduleAtFixedRate(new MyTimeTask(), new Date(), 1000);
				//timer.schedule(new MyTimeTask(), new Date(), 1000);
				
				//延时指定的时间 执行任务
				//timer.schedule(new MyTimeTask(), 60*1000);
			
				//在指定的时间执行某个任务
//				try {
//					timer.schedule(new MyTimeTask(), new SimpleDateFormat("HH:mm:ss").parse("11:38:00"));
//				} catch (ParseException e) {
//					// TODO Auto-generated catch block
//					e.printStackTrace();
//				}
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}
在MyTimeTask 中,我们模拟的任务延时两秒,需要两秒执行完成。
 下面的任务调度是在任务开始时,每个1秒执行一次,也就是说下一个任务开始执行时上一个任务还没有执行完。
 timer.scheduleAtFixedRate(new MyTimeTask(), new Date(), 1000);
  timer.schedule(new MyTimeTask(), new Date(), 1000);指定是在上一任务结束后,每隔一秒开始执行下一个任务
timer.schedule(new MyTimeTask(), new Date(), 1000);指定是在上一任务结束后,每隔一秒开始执行下一个任务
 




![[游戏开发][Unity]出包真机运行花屏(已解决)](https://img-blog.csdnimg.cn/img_convert/bbbb8ec9749c92de6c7533aa3a90750c.png)














