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

Java實(shí)現(xiàn)并發(fā)執(zhí)行定時(shí)任務(wù)并手動(dòng)控制開(kāi)始結(jié)束

 更新時(shí)間:2024年05月13日 09:51:57   作者:日常500  
這篇文章主要介紹了Java實(shí)現(xiàn)并發(fā)執(zhí)行定時(shí)任務(wù)并手動(dòng)控制開(kāi)始結(jié)束,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

簡(jiǎn)介

最近有一點(diǎn)富裕的時(shí)間,就想分享一下關(guān)于并發(fā)定時(shí)任務(wù)的內(nèi)容,我也是查閱相關(guān)博客文檔并自己搗鼓出來(lái)的一點(diǎn)小思路,歡迎各路大佬批評(píng)指正…

應(yīng)用場(chǎng)景

不知道大家對(duì)定時(shí)任務(wù)的使用情況是怎樣,就我個(gè)人而言接觸的也比較少一點(diǎn),分享一下我的使用案例,簡(jiǎn)單點(diǎn)一下使用場(chǎng)景。

最近需要獲取硬件相關(guān)的信息(傳感器信息)到平臺(tái)上進(jìn)行一個(gè)展示,相信有一點(diǎn)經(jīng)驗(yàn)的小伙伴應(yīng)該了解與硬件交互需要涉及到心跳計(jì)時(shí)等等(就不細(xì)說(shuō)了),所以就用到定時(shí)任務(wù)

我使用的是ThreadPoolTaskScheduler類來(lái)進(jìn)行定時(shí)任務(wù)的控制的

下面是我寫的小Demo

代碼邏輯

代碼片(可直接運(yùn)行)

package com.pj.apps.socket.tower;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;


public class TaskTest {
	//需要對(duì)它進(jìn)行初始化
	private static ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); 
	//存儲(chǔ)定時(shí)任務(wù)編號(hào)及任務(wù)
	private static Map<String,ScheduledFuture<?>> map = new HashMap<>();
	//使用靜態(tài)代碼塊來(lái)初始化ThreadPoolTaskScheduler
	static {
		threadPoolTaskScheduler.initialize();
	}
	//開(kāi)啟定時(shí)任務(wù)的方法
    private static void startCron(String tNo) {
		//通過(guò)使用它的方法來(lái)對(duì)任務(wù)進(jìn)行開(kāi)啟和關(guān)閉,使用Cron表達(dá)式,表示時(shí)間間隔并重復(fù)執(zhí)行
    	ScheduledFuture<?> future = threadPoolTaskScheduler.schedule(new MyRunnable(tNo), new CronTrigger("*/5 * * * * ?"));
        map.put(tNo, future);
    } 
 
    //停關(guān)閉定時(shí)任務(wù)
    private static void closeCron(ScheduledFuture<?> future) {
       if (future != null) {
           future.cancel(true);
       }
    }

    //定時(shí)任務(wù)線程
    private static class MyRunnable implements Runnable {
    	private String tNo;
    	public MyRunnable(String tNo) {
    		this.tNo = tNo;
    	}
        @Override
        public void run() {
            System.out.println("線程編號(hào)"+tNo+"定時(shí)任務(wù)邏輯內(nèi)容...");
        }
    } 
	public static void main(String[] args) {
		startCron("9527");
		startCron("9528");
	}
}

運(yùn)行結(jié)果

運(yùn)行結(jié)果

思路簡(jiǎn)單梳理

關(guān)于ThreadPoolTaskScheduler類更詳細(xì)使用可參考大佬們的文章或者百度,這里需要注意的是使用它需要進(jìn)行初始化,我這里在靜態(tài)代碼塊中進(jìn)行了初始化,也可以提出去初始化。

創(chuàng)建了一個(gè)map容器是為了存儲(chǔ)鍵值對(duì)【定時(shí)線程編號(hào)】以及對(duì)應(yīng)的【定時(shí)線程】,可以方便我們后面可以很好的對(duì)每個(gè)定時(shí)任務(wù)進(jìn)行關(guān)閉,因?yàn)殛P(guān)閉定時(shí)器的方法中需要傳的參數(shù)是一個(gè)定時(shí)任務(wù)ScheduledFuture,所以我們可以通過(guò)線程編號(hào)去找到它,再進(jìn)行一個(gè)關(guān)閉。

通過(guò)Cron表達(dá)式來(lái)描述定時(shí)周期,我這里設(shè)置的是每隔5秒執(zhí)行一次,小伙伴們自行去了解一下Cron表達(dá)式。

自定義了一個(gè)任務(wù)內(nèi)容主體線程類MyRunnable,將需要定時(shí)執(zhí)行的邏輯放到這個(gè)里面去,這里還用了一個(gè)帶參構(gòu)造,方便我們傳一些參數(shù)加入到執(zhí)行定時(shí)邏輯里面去,我這里構(gòu)造傳的是模擬的線程編號(hào),需要傳其他更多的參數(shù)可以同樣的方法進(jìn)行參數(shù)的傳遞。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA JeeSite框架httpSession.invalidate()無(wú)效問(wèn)題解決方案

    IDEA JeeSite框架httpSession.invalidate()無(wú)效問(wèn)題解決方案

    這篇文章主要介紹了IDEA JeeSite框架httpSession.invalidate()無(wú)效問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式

    基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式

    出于安全和性能的考慮,我們希望服務(wù)器返回的圖片資源僅在指定網(wǎng)站內(nèi)展示,防止爬蟲(chóng)或其它站點(diǎn)直接引用圖片地址進(jìn)行下載或展示,進(jìn)而消耗服務(wù)器資源,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式,需要的朋友可以參考下
    2025-02-02
  • java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié)

    java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • maven中resource配置的實(shí)現(xiàn)示例

    maven中resource配置的實(shí)現(xiàn)示例

    我們?cè)谑褂肕aven組件來(lái)構(gòu)建項(xiàng)目的時(shí)候,通常將配置文件放在資源文件目錄下,本文主要介紹了maven中resource配置的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 深入淺出JAVA MyBatis-快速入門

    深入淺出JAVA MyBatis-快速入門

    這篇文章主要介紹了在今天這篇博文中,我將要介紹一下mybatis的框架原理,以及mybatis的入門程序,實(shí)現(xiàn)用戶的增刪改查,她有什么優(yōu)缺點(diǎn)以及mybatis和hibernate之間存在著怎么樣的關(guān)系,大家這些問(wèn)題一起通過(guò)本文學(xué)習(xí)吧
    2021-06-06
  • SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)"找不到或無(wú)法加載主類"的解決方法

    SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)"找不到或無(wú)法加載主類"的解決方法

    在使用 IntelliJ IDEA 開(kāi)發(fā)基于 Spring Boot 框架的 Java 程序時(shí),可能會(huì)出現(xiàn)找不到或無(wú)法加載主類 com.example.springboot.SpringbootApplication的錯(cuò)誤提示,下面我們來(lái)看看如何解決吧
    2025-03-03
  • springboot如何使用redis的incr創(chuàng)建分布式自增id

    springboot如何使用redis的incr創(chuàng)建分布式自增id

    這篇文章主要介紹了springboot如何使用redis的incr創(chuàng)建分布式自增id,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java實(shí)現(xiàn)遺傳算法實(shí)例分享(打印城市信息)

    java實(shí)現(xiàn)遺傳算法實(shí)例分享(打印城市信息)

    本文介紹java實(shí)現(xiàn)遺傳算法的實(shí)例,代碼中使用城市名做為數(shù)據(jù),可以打印當(dāng)前代數(shù)的所有城市序列,以及其相關(guān)的參數(shù),大家參考使用吧
    2014-01-01
  • 用dom4j生成xml,去掉xml頭的方法

    用dom4j生成xml,去掉xml頭的方法

    今天小編就為大家分享一篇用dom4j生成xml,去掉xml頭的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • java自定義類加載器代碼示例

    java自定義類加載器代碼示例

    這篇文章主要介紹了java自定義類加載器代碼示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12

最新評(píng)論

延庆县| 郎溪县| 安岳县| 铜鼓县| 南乐县| 舞钢市| 安泽县| 元江| 山西省| 南开区| 怀集县| 乐清市| 吴江市| 武隆县| 巴彦淖尔市| 班玛县| 石楼县| 桦川县| 盐亭县| 宜黄县| 旺苍县| 南华县| 扎赉特旗| 搜索| 勃利县| 饶阳县| 锡林郭勒盟| 疏勒县| 阳曲县| 开江县| 慈溪市| 岚皋县| 兰坪| 谢通门县| 乌兰浩特市| 易门县| 米林县| 丽水市| 年辖:市辖区| 临海市| 泽州县|