多线程_几种定时器的写法
来源:互联网 发布:php异步请求$.post 编辑:程序博客网 时间:2024/05/29 11:47
1 :固定时间后执行一次任务:1000毫秒后执行任务(只执行一次)
2: 5000毫秒后,执行任务,以后每隔1000毫秒再执行一次任务(无限执行)
3:交替再生:任务2秒4秒交替的执行(无限执行),
4: 创建两个循环交替任务:2秒后,A任务执行。 A任务里面创建一个B任务4秒后执行,B任务里面又创建一个A任务2秒后执行,如此往复。
1,2,3代码:
- import java.util.Date;
- import java.util.Timer;
- import java.util.TimerTask;
-
-
-
- public class TraditionalTimer {
- public static void main(String[] args) {
-
-
-
-
-
-
-
- test3();
-
- while (true) {
- System.out.println(new Date().getSeconds());
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
-
- e.printStackTrace();
- }
- }
-
-
- }
-
-
- public static void test1() {
- new Timer().schedule(new TimerTask() {
- @Override
- public void run() {
-
- System.out.println("bombing!");
- }
- }, 1000);
- }
-
-
- public static void test2() {
- new Timer().schedule(new TimerTask() {
- @Override
- public void run() {
-
- System.out.println("bombing!");
- }
- }, 5000, 1000);
- }
-
-
-
- static int count = 0;
- public static void test3() {
-
- class MyTimerTask extends TimerTask {
- @Override
- public void run() {
- count = (count + 1) % 2;
- System.out.println("bombing!");
- new Timer().schedule(new MyTimerTask(), 2000 + count * 2000);
- }
- }
- new Timer().schedule(new MyTimerTask(), 2000);
- }
-
- }
4代码
- import java.util.Date;
- import java.util.Timer;
- import java.util.TimerTask;
-
-
-
-
- public class TraditionalTime2 {
-
-
-
-
-
-
- public static void main(String[] args) {
- TraditionalTime2 t2=new TraditionalTime2();
- new Timer().schedule(t2.new A(), 2000);
-
-
- while (true) {
- System.out.println(new Date().getSeconds());
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
-
- e.printStackTrace();
- }
- }
- }
- class A extends TimerTask {
- @Override
- public void run() {
- System.out.println("A bombing!");
- new Timer().schedule(new B(), 4000);
-
- }
-
- }
-
- class B extends TimerTask {
- @Override
- public void run() {
- System.out.println("B bombing!");
- new Timer().schedule(new A(), 2000);
-
- }
- }
- }
0 0