当前位置:   article > 正文

Java:多种方式实现倒计时定时器_java倒计时

java倒计时

多种方式实现倒计时定时器


github链接:https://github.com/Al-assad/Java-Gadgets/tree/master/count_down


1、简易方式实现

  1. /**
  2. * @see
  3. * @author Al_assad yulinying_1994@outlook.com
  4. * @date 2016年10月18日 上午3:10:13
  5. * @version V1.0
  6. * Description: 倒计时简易实现,只用单线程
  7. */
  8. import java.util.*;
  9. import java.util.concurrent.*;
  10. public class CountDown {
  11. private int limitSec;
  12. public CountDown(int limitSec) throws InterruptedException{
  13. this.limitSec = limitSec;
  14. System.out.println("Count from "+limitSec);
  15. while(limitSec > 0){
  16. System.out.println("remians "+ --limitSec +" s");
  17. TimeUnit.SECONDS.sleep(1);
  18. }
  19. System.out.println("Time is out");
  20. }
  21. //Test
  22. /* public static void main(String[] args) throws InterruptedException {
  23. new CountDown(10);
  24. }*/
  25. }

2、使用ScheduleExecutor实现

  1. /**
  2. * @see
  3. * @author Al_assad yulinying_1994@outlook.com
  4. * @date 2016年10月18日 上午2:14:43
  5. * @version V1.0
  6. * Description: 倒计时实现方式1:使用ScheduledExecutor实现
  7. * 使用两个线程;
  8. */
  9. import java.util.concurrent.*;
  10. public class CountDown1 {
  11. private volatile int limitSec ; //记录倒计时时间
  12. private int curSec; //记录倒计时当下时间
  13. public CountDown1(int limitSec) throws InterruptedException{
  14. this.limitSec = limitSec;
  15. this.curSec = limitSec;
  16. System.out.println("count down form "+limitSec);
  17. ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
  18. exec.scheduleAtFixedRate(new Task(),0,1,TimeUnit.SECONDS);
  19. TimeUnit.SECONDS.sleep(limitSec); //暂停本线程
  20. exec.shutdownNow();
  21. System.out.println("Time out!");
  22. }
  23. private class Task implements Runnable{
  24. public void run(){
  25. System.out.println("Time remains "+ --curSec +" s");
  26. }
  27. }
  28. //Test
  29. /* public static void main(String[] args) throws InterruptedException{
  30. new CountDown1(10);
  31. }*/
  32. }


3、使用java.util.Timer实现

  1. /**
  2. * @see
  3. * @author Al_assad yulinying_1994@outlook.com
  4. * @date 2016年10月18日 上午2:47:44
  5. * @version V1.0
  6. * Description: 倒计时实现方式2:使用java.uitl.Timer实现
  7. * 使用两个线程
  8. */
  9. import java.util.*;
  10. import java.util.concurrent.TimeUnit;
  11. public class CountDown2 {
  12. private int limitSec;
  13. private int curSec;
  14. public CountDown2(int limitSec) throws InterruptedException{
  15. this.limitSec = limitSec;
  16. this.curSec = limitSec;
  17. System.out.println("count down from "+limitSec+" s ");
  18. Timer timer = new Timer();
  19. timer.schedule(new TimerTask(){
  20. public void run(){
  21. System.out.println("Time remians "+ --curSec +" s");
  22. }
  23. },0,1000);
  24. TimeUnit.SECONDS.sleep(limitSec);
  25. timer.cancel();
  26. System.out.println("Time is out!");
  27. }
  28. //Test
  29. /* public static void main(String[] args) throws InterruptedException{
  30. new CountDown2(10);
  31. }*/
  32. }




声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号