Timer与TimerTask
2014-07-25 15:52
28 查看
Timer是Java中的定时任务调度器,而TimerTask相当于一个定时需要被调度的任务。
Timer类比一个线程执行器,而TimerTask相当一个线程。
Timer的原理很简单,就是循环轮询,查是否需要执行到时的任务。主要原理逻辑为下列代码:
Timer类比一个线程执行器,而TimerTask相当一个线程。
Timer的原理很简单,就是循环轮询,查是否需要执行到时的任务。主要原理逻辑为下列代码:
/** * The main timer loop. (See class comment.) */ private void mainLoop() { while (true) { try { TimerTask task; boolean taskFired; synchronized(queue) { // Wait for queue to become non-empty while (queue.isEmpty() && newTasksMayBeScheduled) queue.wait(); if (queue.isEmpty()) break; // Queue is empty and will forever remain; die // Queue nonempty; look at first evt and do the right thing long currentTime, executionTime; task = queue.getMin(); synchronized(task.lock) { if (task.state == TimerTask.CANCELLED) { queue.removeMin(); continue; // No action required, poll queue again } currentTime = System.currentTimeMillis(); executionTime = task.nextExecutionTime; if (taskFired = (executionTime<=currentTime)) { if (task.period == 0) { // Non-repeating, remove queue.removeMin(); task.state = TimerTask.EXECUTED; } else { // Repeating task, reschedule queue.rescheduleMin( task.period<0 ? currentTime - task.period : executionTime + task.period); } } } if (!taskFired) // Task hasn't yet fired; wait queue.wait(executionTime - currentTime); } if (taskFired) // Task fired; run it, holding no locks task.run(); } catch(InterruptedException e) { } } }
相关文章推荐
- java基础——Java并发编程:Timer和TimerTask
- Timer,TimerTask简单讲解
- 定时任务Timer和TimerTask
- java类Timer和TimerTask的使用
- 使用Java中的Timer和TimerTask
- Java并发之Timer,TimerTask
- Java Timer和TimerTask的使用
- Java并发编程:Timer和TimerTask
- 并发编程修炼十三:Timer和TimerTask
- 计时器 Timer,计时任务 TimerTask
- Timer、TimerTask的简单应用及如何解决多次调度相同任务。
- java类Timer和TimerTask
- Android定时操作Timer和TimerTask
- Java中的Timer和TimerTask在Android中的用法
- Timer和TimerTask的使用(一
- Java中的Timer和TimerTask在Android中的用法
- java Timer ,TimerTask执行定时任务
- 疯狂Java学习笔记(67)-----------Timer和TimerTask
- Java中的Timer和TimerTask在Android中的用法
- Java线程(3)Timer和TimerTask