我认为我并不完全理解Java和Android中的定时器(Timer)和定时任务(TimerTask)是如何工作的。现在,我定义了许多周期性任务,并安排在定时器内。
我想知道是否应该使用单个定时器来安排任务,或者为每个任务使用不同的定时器实例是否可以?定时器是否有自己的线程?计划任务是否在新线程中执行?背后发生了什么?
这些方法之间的区别是什么? 方法1 的示例代码:
我想知道是否应该使用单个定时器来安排任务,或者为每个任务使用不同的定时器实例是否可以?定时器是否有自己的线程?计划任务是否在新线程中执行?背后发生了什么?
这些方法之间的区别是什么? 方法1 的示例代码:
private void initTasks() {
TimerTask task1 = new MyTimerTask1();
TimerTask task2 = new MyTimerTask2();
TimerTask task3 = new MyTimerTask3();
Timer timer = new Timer();
timer.schedule(task1, 0, TASK1_PERIOD);
timer.schedule(task2, 0, TASK2_PERIOD);
timer.schedule(task3, 0, TASK3_PERIOD);
}
class MyTimerTask1 extends TimerTask {
public void run() {
//do task1
}
}
class MyTimerTask2 extends TimerTask {
public void run() {
//do task2
}
}
class MyTimerTask3 extends TimerTask {
public void run() {
//do task3
}
}
方法2 的示例代码:
private void initTasks() {
MyTimerTask1 task1 = new MyTimerTask1();
MyTimerTask2 task2 = new MyTimerTask2();
MyTimerTask3 task3 = new MyTimerTask3();
task1.start();
task2.start();
task3.start();
}
class MyTimerTask1 extends TimerTask {
private Timer timer;
public void run() {
//do task1
}
public void start() {
timer = new Timer();
timer.schedule(this, 0, TASK1_PERIOD);
}
}
class MyTimerTask2 extends TimerTask {
private Timer timer;
public void run() {
//do task2
}
public void start() {
timer = new Timer();
timer.schedule(this, 0, TASK2_PERIOD);
}
}
class MyTimerTask3 extends TimerTask {
private Timer timer;
public void run() {
//do task3
}
public void start() {
timer = new Timer();
timer.schedule(this, 0, TASK3_PERIOD);
}
}