java定时器
文章目录
- 任务一:
- 主要方法:
- 程序:
- 运行结果:
- 任务二:
- 主要方法:
- 程序:
- 运行结果:
- 任务三:
- 主要方法:
- 程序:
- 运行结果:
这篇博客介绍java的定时器类Timer, 和多线程类Thread.
任务一:
Modifier | Constructor | Description |
---|---|---|
protected | TimerTask() | Creates a new timer task. |
Timer() | Creates a new timer. |
Method | Description |
---|---|
scheduleatfixedrate(TimerTask task, long delay, long period) | Schedules the specified task for repeated fixed-rate execution,beginning after the specified delay. |
run() | The action to be performed by this timer task. |
程序:
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
public class JavaTimer {
public static void main(String args[]) {
TimerTask task = new TimerTask() { //创建一个新的timer task
public void run() { //定时器任务执行的操作
Date date = new Date();//创建Date对象
String hour = string.format("%tH",date);//格式化输出时间
String minute = String.format("%tM",date);
String second = String.format("%tS",date);
System.out.println("现在是:" + hour + "时" +minute+"分" + second +"秒");
}
};
Timer timer = new Timer();//创建一个定时器
long delay = 0;
long PeriodTime = 1 * 1000;
timer.scheduleAtFixedRate(task, delay, PeriodTime);
//重复执行特定任务,第一个参数为要执行的任务,第二个为执行任务之前延迟的时间,第三个为时间间隔
//单位都是毫秒
}
}
运行结果:
任务二:
- 完成一个java application应用程序,在应用程序主进程中新开一个线程,此线程进行死循环,每1秒被激活一次,激活时即在输出显示当前时间。
主要方法:
Modifier and Type | Method | Description |
---|---|---|
static void | sleep(long millis) | Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds |
void | start() | Causes this thread to begin execution; the Java virtual Machine calls the |
程序:
import java.text.simpledateformat;
import java.util.Date;
public class ThreadTest extends Thread {
public void run() {
while(true) {
try {
Thread.sleep(1000);//程序眠1秒,括号内参数以毫秒为单位
SimpleDateFormat ft = new SimpleDateFormat("yyy-MM-dd hh:mm:ss");//格式化输出时间
String time = ft.format(new Date());
System.out.println("现在时刻:" + time);//输出时间
}
catch (InterruptedException e) {
e.printstacktrace();
}
}
}
public static void main(String[] args) {
new ThreadTest().start();//启动线程
}
}
运行结果:
任务三:
- 完成一个java application应用程序,此应用程序公共类有一个double型类属性(变量)x,初始值为0;在应用程序主进程中新开两个线程,这两个线程都进行死循环;第1个线程每隔300ms激活一次,令类属性x自加1.0并输出显示;第2个线程每隔400ms激活一次,令类属性x自加0.1并输出显示。
主要方法:
分别开启两个线程
程序:
public class ThreDemo {
static double x = 0;
public static void main(String args[]) {
Thread t1 = new Thread(new Thread1());//创建线程
Thread t2 = new Thread(new Thread2());
t1.start();//开启线程
t2.start();
}
public static class Thread1 extends Thread {
public void run() { //run方法,里面包含要执行的任务
while(true){
try{
Thread.sleep(300);//线程休眠300毫秒
x +=1.0;
System.out.println("x+1: " + x);//输出值
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static class Thread2 extends Thread {
public void run() {
while(true){
try{
Thread.sleep(300);
x +=0.1;
System.out.println("x+0.1: " + x);
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
运行结果:
相关阅读
一、定时器是什么?答:顾名思义即是用于定时执行任务而设定。二、Java有几种定时器?答:有常用的4种Java定时器三、举例说明环境:jdk-1.7