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

Java定時(shí)任務(wù)ScheduledThreadPoolExecutor示例詳解

 更新時(shí)間:2023年11月30日 11:48:24   作者:煮酒泛舟  
這篇文章主要介紹了Java定時(shí)任務(wù)ScheduledThreadPoolExecutor示例詳解,這里使用scheduleAtFixedRate方法安排一個(gè)任務(wù),該任務(wù)是一個(gè) Runnable 匿名類(lèi),其run方法中調(diào)用了new LoginViewTimeTask().loginStatisticsHandle()方法,需要的朋友可以參考下

ScheduledThreadPoolExecutor 的創(chuàng)建

ScheduledThreadPoolExecutor executorService = new ScheduledThreadPoolExecutor(
        1, // 核心線程數(shù)
        new BasicThreadFactory.Builder()
                .namingPattern("example-schedule-pool-%d") // 線程命名規(guī)則
                .daemon(true) // 設(shè)置線程為守護(hù)線程
                .build()
);

這里創(chuàng)建了一個(gè)大小為1的定時(shí)任務(wù)線程池,使用了 BasicThreadFactory 來(lái)設(shè)置線程的命名規(guī)則為 “example-schedule-pool-1”,并將線程設(shè)置為守護(hù)線程。

定時(shí)任務(wù)的執(zhí)行

executorService.scheduleAtFixedRate(
        new Runnable() {
            @Override
            public void run() {
                try {
                    new LoginViewTimeTask().loginStatisticsHandle();
                } catch (Exception e) {
                    Global.getInstance().LogError(e);
                }
            }
        },
        1000 * 60, // 初次執(zhí)行延遲時(shí)間,這里是1分鐘
        1000 * 60 * 60 * 24, // 固定間隔時(shí)間,這里是1天
        TimeUnit.HOURS // 時(shí)間單位,這里是小時(shí)
);

這里使用 scheduleAtFixedRate 方法安排一個(gè)任務(wù),該任務(wù)是一個(gè) Runnable 匿名類(lèi),其 run 方法中調(diào)用了 new LoginViewTimeTask().loginStatisticsHandle() 方法。這個(gè)任務(wù)將在初始延遲后以固定的時(shí)間間隔重復(fù)執(zhí)行。

具體參數(shù)解釋

  • 初次執(zhí)行延遲時(shí)間:1000 * 60 毫秒,即1分鐘。
  • 固定間隔時(shí)間:1000 * 60 * 60 * 24 毫秒,即1天。
  • 時(shí)間單位:TimeUnit.HOURS,表示以上時(shí)間參數(shù)的單位是小時(shí)。

總體來(lái)說(shuō),這段代碼的作用是創(chuàng)建一個(gè)定時(shí)任務(wù),每隔一天執(zhí)行一次 LoginViewTimeTask 類(lèi)中的 loginStatisticsHandle 方法,初次執(zhí)行延遲1分鐘。如果 loginStatisticsHandle 方法中的邏輯是定期執(zhí)行的任務(wù),這樣的定時(shí)任務(wù)可以用于定期統(tǒng)計(jì)登錄信息。
ScheduledThreadPoolExecutor 本身沒(méi)有直接提供設(shè)置初始執(zhí)行時(shí)間的方法,但你可以通過(guò)計(jì)算初始延遲來(lái)實(shí)現(xiàn)類(lèi)似的效果??梢允褂?System.currentTimeMillis() 獲取當(dāng)前時(shí)間戳,然后計(jì)算出距離下一次執(zhí)行的時(shí)間差。

設(shè)置初始執(zhí)行時(shí)間

以下是一個(gè)示例代碼,演示了如何在 ScheduledThreadPoolExecutor 中設(shè)置初始執(zhí)行時(shí)間:

import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledTaskExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè) ScheduledExecutorService
        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
        // 獲取當(dāng)前時(shí)間
        long currentTimeMillis = System.currentTimeMillis();
        // 計(jì)算距離下一次執(zhí)行的時(shí)間差(假設(shè)下一次執(zhí)行是明天的這個(gè)時(shí)刻)
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_YEAR, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 12); // 設(shè)置小時(shí)
        calendar.set(Calendar.MINUTE, 0);      // 設(shè)置分鐘
        calendar.set(Calendar.SECOND, 0);      // 設(shè)置秒
        calendar.set(Calendar.MILLISECOND, 0); // 設(shè)置毫秒
        long initialDelay = calendar.getTimeInMillis() - currentTimeMillis;
        // 執(zhí)行任務(wù),每隔一天執(zhí)行一次
        executorService.scheduleAtFixedRate(
                new Runnable() {
                    @Override
                    public void run() {
                        // 任務(wù)邏輯
                        System.out.println("Task executed at: " + new Date());
                    }
                },
                initialDelay,  // 初始延遲時(shí)間
                24,            // 間隔時(shí)間
                TimeUnit.HOURS // 時(shí)間單位
        );
    }
}

在這個(gè)例子中,initialDelay 計(jì)算了當(dāng)前時(shí)間到明天的指定時(shí)刻的時(shí)間差。這樣,第一次執(zhí)行任務(wù)的時(shí)間就被設(shè)定為明天的這個(gè)時(shí)刻。后續(xù)的任務(wù)將會(huì)在每隔24小時(shí)執(zhí)行一次。你可以根據(jù)需要調(diào)整計(jì)算初始延遲的邏輯。

到此這篇關(guān)于Java定時(shí)任務(wù) ScheduledThreadPoolExecutor的文章就介紹到這了,更多相關(guān)Java定時(shí)任務(wù) ScheduledThreadPoolExecutor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深度分析MybatisPlus查詢結(jié)果映射失敗@TableField失效解決辦法

    深度分析MybatisPlus查詢結(jié)果映射失敗@TableField失效解決辦法

    本文針對(duì)SpringBoot使用MybatisPlus框架時(shí)出現(xiàn)的查詢結(jié)果映射失敗問(wèn)題進(jìn)行深入分析,通過(guò)源碼解析,闡述了@TableField注解失效的原因,并提出了四種有效的解決方案,感興趣的朋友一起看看吧
    2025-07-07
  • JAVA心得分享---return語(yǔ)句的用法

    JAVA心得分享---return語(yǔ)句的用法

    return算是各大語(yǔ)言的???,基本上都有return語(yǔ)句,那么在JAVA中,return有什么特殊的地方嗎,下面我們來(lái)分析下
    2014-05-05
  • IDEA 2020代碼提示忽略大小寫(xiě)的問(wèn)題

    IDEA 2020代碼提示忽略大小寫(xiě)的問(wèn)題

    這篇文章主要介紹了IDEA 2020代碼提示忽略大小寫(xiě)的問(wèn)題,本文通過(guò)圖文并茂的形式給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java中的注解和反射實(shí)例詳解

    Java中的注解和反射實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于Java中注解和反射的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型

    一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型

    這篇文章主要介紹了一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型,本篇文章主要來(lái)總結(jié)一下Java虛擬機(jī)內(nèi)存的各個(gè)區(qū)域,以及這些區(qū)域的作用、服務(wù)對(duì)象以及其中可能產(chǎn)生的問(wèn)題,作為大家的面試寶典。,需要的朋友可以參考下
    2019-06-06
  • Springboot + Mysql8實(shí)現(xiàn)讀寫(xiě)分離功能

    Springboot + Mysql8實(shí)現(xiàn)讀寫(xiě)分離功能

    這篇文章主要介紹了Springboot + Mysql8實(shí)現(xiàn)讀寫(xiě)分離功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java選擇排序法以及實(shí)例詳解

    Java選擇排序法以及實(shí)例詳解

    在本篇文章里小編給大家整理了一篇關(guān)于Java選擇排序法以及實(shí)例內(nèi)容,并做了詳細(xì)分析,有興趣的朋友們可以跟著學(xué)習(xí)下。
    2022-11-11
  • Spring MVC利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API詳解

    Spring MVC利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API詳解

    這篇文章主要給大家介紹了關(guān)于在Spring MVC中利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • mybatisplus where QueryWrapper加括號(hào)嵌套查詢方式

    mybatisplus where QueryWrapper加括號(hào)嵌套查詢方式

    這篇文章主要介紹了mybatisplus where QueryWrapper加括號(hào)嵌套查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • SpringBoot?隱式參數(shù)注入詳解告別重復(fù)代碼,讓?Controller?更優(yōu)雅

    SpringBoot?隱式參數(shù)注入詳解告別重復(fù)代碼,讓?Controller?更優(yōu)雅

    本文介紹了使用SpringBoot的HandlerMethodArgumentResolver實(shí)現(xiàn)隱式參數(shù)注入的技巧,通過(guò)自定義注解和解析器,可以簡(jiǎn)化Controller中的重復(fù)參數(shù)處理邏輯,提升代碼的可維護(hù)性和可讀性,感興趣的朋友跟隨小編一起看看吧
    2026-03-03

最新評(píng)論

曲阳县| 玉环县| 恩平市| 甘南县| 沾化县| 龙岩市| 东光县| 宕昌县| 富民县| 桂东县| 田阳县| 新野县| 峨边| 如皋市| 原平市| 襄樊市| 尉氏县| 临沧市| 嵊泗县| 正镶白旗| 永福县| 荆门市| 白山市| 浪卡子县| 阿图什市| 青浦区| 北安市| 奉节县| 沾益县| 宝兴县| 邵武市| 博爱县| 黔东| 同心县| 右玉县| 长治市| 新密市| 靖江市| 柳河县| 庆城县| 通山县|