首页 > 其他分享 >实现倒计时的4种方式

实现倒计时的4种方式

时间:2023-11-26 10:55:05浏览次数:23  
标签:countDown 方式 实现 void System 倒计时 seconds new public

使用TimeUnit实现倒计时

public static void countDown(int sec) throws InterruptedException {
    while (sec > 0) {
        System.out.println(sec + "s");
        TimeUnit.SECONDS.sleep(1);
        sec--;
    }
}

使用Timer实现倒计时

public static void countDown(int second) {
    long start = System.currentTimeMillis();
    final long end = start + second * 1000;
    final Timer timer = new Timer();
    timer.schedule(new TimerTask()
                   {
                       public void run()
                       {
                           long show = end - System.currentTimeMillis();
                           long s = show / 1000 % 60;
                           System.out.println(s + "s");
                       }
                   },0,1000);

    timer.schedule(new TimerTask()
                   {
                       public void run()
                       {
                           timer.cancel();
                       }

                   }, new Date(end));
}

使用Thread.sleep()实现倒计时

public static void countDown(int seconds) throws InterruptedException {
    while(seconds > 0){
        System.out.println(seconds + "s");
        Thread.sleep(1000L);
        seconds--;
    }
}

使用CountDownLatch实现倒计时

CountDownLatch是同步工具类。有一个计数器,初始值为指定数值,每调用countDown()一次计数器减1,直至0,调await()方法结束。

public static void countDown(int seconds) throws InterruptedException {
    CountDownLatch latch = new CountDownLatch(seconds);
    while(seconds > 0){
        try {
            Thread.sleep(1000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        new Thread(() ->{
            latch.countDown();
        }
                  ).start();
        System.out.println(seconds);
        seconds--;
    }
    latch.await();
}

 

标签:countDown,方式,实现,void,System,倒计时,seconds,new,public
From: https://www.cnblogs.com/xfeiyun/p/17856535.html

相关文章

  • 运输问题和指派问题——Python实现
    随着社会和经济的不断进步,现代物流业蓬勃发展,如何充分利用时间、信息、仓储、配送和联运体系创造更多的价值,是物流运作必须解决的问题。日益复杂的运输活动使得运输问题变得越来越庞杂,但是其核心思想仍然是实现现有资源的最优化配置。运输问题经常出现在计划货物配送和从某些供给......
  • C++ 通过SQLite实现命令行工具
    本文介绍了一个基于C++、SQLite和Boost库的简单交互式数据库操作Shell。该Shell允许用户通过命令行输入执行各种数据库操作,包括添加、删除主机信息,设置主机到特定主机组,以及显示主机和主机组列表。通过调用SQLite3库实现数据库连接和操作,以及使用Boost库进行字符串解析......
  • 使用JavaWeb实现文件的上传和下载
    文件上传[文件上传的注意事项]1.为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。2.为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名3.要限制上传文件的最大值。4.可以限制上传文件的类型,在收到上传文件名时,判断后缀名是否合......
  • 使用conditional 实现线程精准通讯
    实现3个线程之间依次执行比如有3个线程A,B,C,需要按照顺序执行,ABC,ABC依次执行。这个使用可以使用Lock的conditional来实现线程之间精准通讯。点击查看代码packagecom.study.juc;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Loc......
  • python 中实现对列表中各元素的个数进行统计
     001、方法1>>>list1=["aa","aa","bb","aa","cc","cc"]##测试列表>>>list1.count("aa")##借助内置函数输出单个元素的次数3>>>s......
  • C#调用C++类库的几种方式
    1、 直接调用C++类库中的公共方法使用DllImport特性对方法进行调用,比如一个C++类库SampleCppWrapper.dll中的公共方法:extern"C"__declspec(dllexport)int__stdcallAdd(intn1,intn2);__stdcall表示调用约定:参数都是从右向左通过堆栈传递, 函数调用在返回前要由被调......
  • linux shell实现计算SNP在指定群体的ROH片段中出现的频率
     001、ROH检测[s20213040583@admin1test]$ls##测试文件outcome.mapoutcome.ped##plink软件检测[s20213040583@admin1test]$plink--fileoutcome--homozyg--homozyg-density50--homozyg-gap1000--homozyg-kb500--homozyg-sn......
  • springBoot + 工厂模式 实现 快递鸟、顺丰和快递100的物流查询
    前言:在SpringBoot中实现快递鸟、顺丰和快递100的物流查询功能通常需要与它们提供的API进行交互。当然使用他们的API我们是需要申请和注册,从而去拿到key来进行调用。所以为注册的必须先进行注册,以下是他们的官网地址,可以快捷到达。快递鸟官网:快递鸟-快递查询接口_免费快递......
  • 栈实现计算器
    计算器/***@author缪广亮*@version1.0*/@SuppressWarnings({"all"})publicclassCalculator{publicstaticvoidmain(String[]args){//完成表达式的运算Stringexpression="770+2*6-4+1";//创建数栈和字符栈Linke......
  • 实现环形进度条效果
    好基友扔过来一张效果图,简单分析下,一起看看如何实现它吧。一个半环形用于表示0-100%。半环形开头有一个圆点作为修饰。半环形两端需要呈现为圆角。通过div实现先画一个长方形。<divclass="graph"></div>.graph{width:200px;height:100px;border:20pxsolidrgb......