使用 timer 和 timerTask 同步 java 线程
java.util.timer 是一个可以用来调度的类(java scheduler) 与线程关联的任务,以便在将来执行。任务可以定期运行一次或重复运行。多个线程可以共享 timer前提是将同步 java.
java.util.TimerTask 是一个实现 可运行跨度>。我们需要从这个类继承来创建我们的 TimerTask将使用timer。timer 使用 wait and notify 方法来调度进程。
下面是 timer 实现的示例:
import java.awt.Toolkit;Output
import java.util.Date;
导入 java.util.Timer;
import java.util.TimerTask;
public class TimerTask{
static Toolkit toolkit;
public TimerTask(){
toolkit = Toolkit.getDefaultToolkit();
TimerTask timerTask = new executetask();
//以 deamon
Timer timer = new Timer(true);
//在预定义的时间内为将来执行的任务提供任务
timer.schedule(timerTask, 0, 1*1000);
System.out.println(TimerTask 已启动”);
//10s后取消
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
timer.cancel();
System.out.println(TimerTask 已停止”);
}
class executetask extends TimerTask {
@Override
public void run() {
System.out.println(Starts: ”+new Date());
尝试 {
//2 秒完成任务
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
toolkit.beep();
System.out.println(完成: ”+new Date());
}
}
public static void main(String args[]){
new TimerTask();
}
}
这是一个任务管理器的简单示例。计时器将启动一个 任务 每 1 秒(1000 毫秒)重复一次,间隔固定。使用方法 schedule() 它作为参数:
- La 任务 待订购。
- The Time Before任务 将被执行。以毫秒为单位.
- 连续执行之间的时间任务 或执行频率(以毫秒为单位)。
Timer.cancel() 取消计时器和所有任务 在队列中。一旦完成,它就完成了守护程序线程也终止。
引用:
Oracle: Timer class
Oracle: timerTask 类
java2s:Toolkit beep
javapoint: 守护程序线程