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

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

1、简易方式实现

/**

* @see

* @author Al_assad yulinying_1994@outlook.com

* @date 2016年10月18日 上午3:10:13

* @version V1.0

* Description: 倒计时简易实现,只用单线程

*/

import java.util.*;

import java.util.concurrent.*;

public class CountDown {

private int limitSec;

public CountDown(int limitSec) throws InterruptedException{

this.limitSec = limitSec;

System.out.println("Count from "+limitSec);

while(limitSec > 0){

System.out.println("remians "+ --limitSec +" s");

TimeUnit.SECONDS.sleep(1);

}

System.out.println("Time is out");

}

//Test

/*public static void main(String[] args) throws InterruptedException {

new CountDown(10);

}*/

}

2、使用ScheduleExecutor实现

/**

* @see

* @author Al_assad yulinying_1994@outlook.com

* @date 2016年10月18日 上午2:14:43

* @version V1.0

* Description: 倒计时实现方式1:使用ScheduledExecutor实现

* 使用两个线程;

*/

import java.util.concurrent.*;

public class CountDown1 {

private volatile int limitSec ; //记录倒计时时间

private int curSec; //记录倒计时当下时间

public CountDown1(int limitSec) throws InterruptedException{

this.limitSec = limitSec;

this.curSec = limitSec;

System.out.println("count down form "+limitSec);

ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);

exec.scheduleAtFixedRate(new Task(),0,1,TimeUnit.SECONDS);

TimeUnit.SECONDS.sleep(limitSec); //暂停本线程

exec.shutdownNow();

System.out.println("Time out!");

}

private class Task implements Runnable{

public void run(){

System.out.println("Time remains "+ --curSec +" s");

}

}

//Test

/*public static void main(String[] args) throws InterruptedException{

new CountDown1(10);

}*/

}

3、使用java.util.Timer实现

/**

* @see

* @author Al_assad yulinying_1994@outlook.com

* @date 2016年10月18日 上午2:47:44

* @version V1.0

* Description: 倒计时实现方式2:使用java.uitl.Timer实现

* 使用两个线程

*/

import java.util.*;

import java.util.concurrent.TimeUnit;

public class CountDown2 {

private int limitSec;

private int curSec;

public CountDown2(int limitSec) throws InterruptedException{

this.limitSec = limitSec;

this.curSec = limitSec;

System.out.println("count down from "+limitSec+" s ");

Timer timer = new Timer();

timer.schedule(new TimerTask(){

public void run(){

System.out.println("Time remians "+ --curSec +" s");

}

},0,1000);

TimeUnit.SECONDS.sleep(limitSec);

timer.cancel();

System.out.println("Time is out!");

}

//Test

/*public static void main(String[] args) throws InterruptedException{

new CountDown2(10);

}*/

}

java 定时器 倒计时_Java:多种方式实现倒计时定时器相关推荐

  1. 请描述定时器初值的计算方式_51单片机定时器初值计算方法详解

    在学习单片机的时候,我们发现很多功能都是通过中断来实现的.之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法.8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次 ...

  2. java复制文件_java多种文件复制方式以及效率比较

    1.背景 java复制文件的方式其实有很多种,可以分为 - 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,Buffere ...

  3. java生成word文档_Java多种方式动态生成doc文档

    本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点. ...

  4. java ca认证_java编程方式生成CA证书

    下面是java编程方式生成CA证书的代码,使用的是BC的provider.生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致:2,在ContentSigner.b ...

  5. JAVA连接Redis客户端多种方式实现

    Jedis介绍 Redis不仅使用命令来操作,而且可以使用程序客户端操作.现在基本上主流的语言都有客户端支持,比如java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Jav ...

  6. java进程通信方式_Java进程间通信方式

    进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信,交换信息的方法. 根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型: 1.低级通信, ...

  7. 请描述定时器初值的计算方式_51单片机定时器初值计算器

    51单片机定时初值计算软件是一款比较实用的单片机定时器初值计算软件,可以精确的计算定时器的时间常数,给出数据即可快速计算出初值,还可以设置定时器方式晶振频率定时时长.有需要的朋友可以下载! 10MS定 ...

  8. java源代码实例倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  9. java倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

最新文章

  1. __getattr__ 与动态属性
  2. fullpage 单屏高度超过屏幕高度,实现单屏内可以滚动并解决手机端单屏高度不正确的问题
  3. hi3559 目标检测
  4. 揭密 extern C
  5. ACCESS高级注入
  6. 中如何刷新当前路由_企业装修和家庭改造中,路由器及接收器如何安放
  7. 用laravel dingo api插件库创建api的一些心得笔记
  8. vscode svn使用_使用Typescript封装Vue组件
  9. Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心
  10. 写好Java代码的30条经验总结
  11. paip.navicat form mysql导入文本文件时CPU占用100%的解决
  12. 如何用c#语言构造蜘蛛程序(网络爬虫实现),如何构造一个C#语言的爬虫蜘蛛程序1.doc...
  13. 【基础数学】Jensen不等式
  14. 数据包络分析方法与maxdea软件_奥林巴斯OmniScan X3探伤仪软件升级,缺陷图像无处藏...
  15. webrtc音频QOS方法三(回声的产生及抑制)
  16. java 数组定义是必须指定长度吗
  17. 俞敏洪老师谈英语单词记忆方法——转
  18. 登录失败:用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。 ...
  19. uniapp 生成商品海报并分享保存
  20. 2021-01-30关于IE浏览器被篡改主页无法修改的解决办法

热门文章

  1. 华为v9play有计算机吗,华为荣耀v9play好用吗,华为荣耀v9play参数配置
  2. 重装上阵怎么造简便机器人_重装上阵机器人蓝图怎么做?机器人蓝图制作方法详解[多图]...
  3. 一个tomcat下有多个应用时 多个Context启动冲突的问题解决
  4. MySQL DBA必备工具使用的6大锦囊妙计
  5. 线性代数考研笔记(四)
  6. Snowboy 声音识别
  7. dlink客户端 android,DLink IP Cam Viewer by OWLR
  8. Javascript中公有成员,私有成员,静态成员
  9. 东欧黑客入侵港股造市图利 半年涉款5300万
  10. 英语学习详细笔记(三)代名词