ScheduledExecutorService的用法——定时执行两个任务
package control; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class TimerManager { // Log log=Log.getLoger(); private ScheduledExecutorService scheduExec; public long start; public TimerManager() { this.scheduExec = Executors.newScheduledThreadPool(2); this.start = System.currentTimeMillis(); long oneDay = 24 * 60 * 60 * 1000; long initDelayOne = getTimeMillis("3:00:00") - System.currentTimeMillis(); initDelayOne = initDelayOne > 0 ? initDelayOne : oneDay + initDelayOne; long initDelayTwo = getTimeMillis("3:00:00") - System.currentTimeMillis(); initDelayTwo = initDelayTwo > 0 ? initDelayTwo : oneDay + initDelayTwo; } public void timerOne(){ scheduExec.scheduleWithFixedDelay(new Runnable() { public void run() { ... System.out.println("timerOne invoked ....."); } },0,5000, TimeUnit.MILLISECONDS); } public void timerTwo(){ scheduExec.scheduleAtFixedRate(new Runnable() { public void run() { ... System.out.println("timerTwo invoked ....."); } },2000,5000,TimeUnit.MILLISECONDS); } /** * @param time "HH:mm:ss" * @return */ private static long getTimeMillis(String time) { try { DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); DateFormat dayFormat = new SimpleDateFormat("yy-MM-dd"); Date curDate = dateFormat.parse(dayFormat.format(new Date()) + " " + time); return curDate.getTime(); } catch (ParseException e) { e.printStackTrace(); } return 0; } public static void main(String[] args) { TimerManager test = new TimerManager(); test.timerOne(); } }