最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)固定時段倒計時的示例代碼

 更新時間:2025年08月19日 08:40:53   作者:愛碼少年?00fly.online  
這篇文章主要為大家詳細介紹了java實現(xiàn)固定時段倒計時,可以在每隔一定時間給出時間倒計時提示,文中的示例代碼講解詳細,需要的可以了解下

一、簡單需求

某系統(tǒng)需要每隔一定時間給出時間倒計時提示,時間倒計時可能為每1、2、3、4、6、8、12或24小時,提示格式為HH:mm:ss

二、代碼實現(xiàn)

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.time.DateFormatUtils;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Hours
{
    private static ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);
    
    private static int[] hours = {1, 2, 3, 4, 6, 8, 12, 24};
    
    /**
     * 整點倒計時
     * 
     * @param args
     * @see [類、類#方法、類#成員]
     */
    public static void main(String[] args)
    {
        // 3ms微調值
        long initDelay = 10000L - System.currentTimeMillis() % 10000L - 3;
        int hour = hours[RandomUtils.nextInt(0, hours.length)];
        executorService.scheduleAtFixedRate(() -> printTime(hour), initDelay, 10000, TimeUnit.MILLISECONDS);
    }
    
    private static void printTime(int hour)
    {
        // 定義時間間隔
        Long between = hour * 3600000L;
        long time = between - (System.currentTimeMillis() + 8 * 3600000L) % between;
        
        //去除100ms之內誤差
        time += (100 - time % 100); 
        String after = DateFormatUtils.formatUTC(time, "HH':'mm':'ss.SSS");
        log.info("---------------  {} ==> {} H -------------------", after, hour);
    }
}

三、運行結果

2025-07-16 08:20:00.005 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:40:00.000 ==> 3 H -------------------
2025-07-16 08:20:10.001 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:39:50.000 ==> 3 H -------------------
2025-07-16 08:20:20.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:39:40.000 ==> 3 H -------------------
2025-07-16 08:20:30.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:39:30.000 ==> 3 H -------------------
2025-07-16 08:20:40.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:39:20.000 ==> 3 H -------------------
2025-07-16 08:20:50.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:39:10.000 ==> 3 H -------------------
2025-07-16 08:21:00.006 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:39:00.000 ==> 3 H -------------------
2025-07-16 08:21:10.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:38:50.000 ==> 3 H -------------------
2025-07-16 08:21:20.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:38:40.000 ==> 3 H -------------------
2025-07-16 08:21:30.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:38:30.000 ==> 3 H -------------------
2025-07-16 08:21:40.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:38:20.000 ==> 3 H -------------------
2025-07-16 08:21:50.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:38:10.000 ==> 3 H -------------------
2025-07-16 08:22:00.005 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:38:00.000 ==> 3 H -------------------
2025-07-16 08:22:10.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:37:50.000 ==> 3 H -------------------
2025-07-16 08:22:20.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:37:40.000 ==> 3 H -------------------
2025-07-16 08:22:30.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:37:30.000 ==> 3 H -------------------
2025-07-16 08:22:40.002 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:37:20.000 ==> 3 H -------------------
2025-07-16 08:22:50.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:37:10.000 ==> 3 H -------------------
2025-07-16 08:23:00.005 [pool-2-thread-2] INFO  c.f.s.Hours                    - ---------------  00:37:00.000 ==> 3 H -------------------
2025-07-16 08:23:10.002 [pool-2-thread-1] INFO  c.f.s.Hours                    - ---------------  00:36:50.000 ==> 3 H -------------------

四、知識擴展

java寫一個從某個時間開始倒計時的程序

在日常生活中,我們經常會遇到需要進行倒計時的情況,比如倒計時比賽開始、倒計時活動結束等。通過編寫一個簡單的Java程序,我們可以實現(xiàn)一個從某個時間開始倒計時的功能。這篇文章將向大家介紹如何使用Java來實現(xiàn)這個倒計時程序,并提供代碼示例。

實現(xiàn)原理

倒計時程序的實現(xiàn)原理其實很簡單:我們需要獲取當前時間和目標時間的差值,然后不斷減少這個差值,直到倒計時結束。在Java中,我們可以使用java.util.Date或者java.time.LocalDateTime來表示時間,并通過計算兩個時間的毫秒差值來實現(xiàn)倒計時。

代碼示例

下面是一個簡單的Java倒計時程序的實現(xiàn),我們設置一個目標時間,然后每秒更新一次倒計時的剩余時間,直到倒計時結束。

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class CountdownTimer {
    public static void main(String[] args) {
        LocalDateTime targetTime = LocalDateTime.now().plusMinutes(1); // 設置目標時間為當前時間的1分鐘后

        while (LocalDateTime.now().isBefore(targetTime)) {
            LocalDateTime currentTime = LocalDateTime.now();
            long secondsLeft = currentTime.until(targetTime, ChronoUnit.SECONDS);

            System.out.println("倒計時剩余時間:" + secondsLeft + "秒");

            try {
                Thread.sleep(1000); // 每隔1秒更新一次倒計時
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        System.out.println("倒計時結束!");
    }
}

運行結果

當我們運行上面的倒計時程序時,控制臺將輸出類似如下的內容:

倒計時剩余時間:59秒
倒計時剩余時間:58秒
倒計時剩余時間:57秒
...
倒計時結束!

到此這篇關于java實現(xiàn)固定時段倒計時的示例代碼的文章就介紹到這了,更多相關java倒計時內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java中@DateTimeFormat和@JsonFormat注解的使用

    java中@DateTimeFormat和@JsonFormat注解的使用

    本文主要介紹了java中@DateTimeFormat和@JsonFormat注解的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Spring Cloud OpenFeign實現(xiàn)動態(tài)服務名調用的示例代碼

    Spring Cloud OpenFeign實現(xiàn)動態(tài)服務名調用的示例代碼

    在微服務架構中,我們經常需要根據動態(tài)傳入的服務名來遠程調用其他服務,例如,你的業(yè)務中可能有多個子服務:service-1、service-2……需要動態(tài)決定調用哪個,所以本文給大家介紹了Spring Cloud OpenFeign 實現(xiàn)動態(tài)服務名調用指南,需要的朋友可以參考下
    2025-06-06
  • 基于Struts2實現(xiàn)防止表單重復提交

    基于Struts2實現(xiàn)防止表單重復提交

    這篇文章主要介紹了基于Struts2實現(xiàn)防止表單重復提交,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • springboot全局字符編碼設置解決亂碼問題

    springboot全局字符編碼設置解決亂碼問題

    這篇文章主要介紹了springboot全局字符編碼設置解決亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Java中的== 和equals()方法詳解與實例

    Java中的== 和equals()方法詳解與實例

    本篇文章介紹了,在java中"==" 與equals方法的使用及其實例,需要的朋友可以參考下
    2017-04-04
  • Java用list儲存,遍歷,查詢指定信息過程詳解

    Java用list儲存,遍歷,查詢指定信息過程詳解

    這篇文章主要介紹了Java用list儲存,遍歷,查詢指定信息過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Springboot中用 Netty 開啟UDP服務方式

    Springboot中用 Netty 開啟UDP服務方式

    這篇文章主要介紹了Springboot中用 Netty 開啟UDP服務方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring示例講解條件注入方法

    Spring示例講解條件注入方法

    Spring支持按照條件來注入某些特定的bean,這也是Spring Boot實現(xiàn)自動化配置的底層方法,文中的示例代碼講解詳細,需要的可以參考一下
    2022-06-06
  • JavaFX實現(xiàn)簡易時鐘效果(二)

    JavaFX實現(xiàn)簡易時鐘效果(二)

    這篇文章主要為大家詳細介紹了JavaFX實現(xiàn)簡易時鐘效果的第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 三種Spring BeanName生成器,你了解嗎

    三種Spring BeanName生成器,你了解嗎

    無論我們是通過 XML 文件,還是 Java 代碼,亦或是包掃描的方式去注冊 Bean,都可以不設置BeanName,而Spring均會為之提供默認的 beanName,本文我們就來看看 Spring 中三種處理不同情況的 beanName生成器吧
    2023-09-09

最新評論

和顺县| 盐津县| 遵义县| 颍上县| 大港区| 邵阳市| 崇州市| 那坡县| 龙山县| 繁峙县| 宁蒗| 博罗县| 微博| 名山县| 达日县| 新干县| 柯坪县| 淮北市| 边坝县| 深泽县| 泰宁县| 渝中区| 且末县| 平定县| 阿拉善左旗| 酒泉市| 滦南县| 宁强县| 马山县| 恩施市| 小金县| 吉林省| 遂宁市| 龙游县| 土默特右旗| 石河子市| 剑川县| 泸定县| 安吉县| 富源县| 竹山县|