在非Spring環境下Main方法中,怎么使用spring的ThreadPoolTaskScheduler啟動Scheduler?

作為Java開發人員,在使用spring框架的時候,如果想要獲取到線程池對象,可以直接使用spring框架提供的ThreadPoolxxx來獲取。那么在非spring環境下,main函數怎么使用ThreadPoolTaskScheduler呢?下面凱哥(凱哥Java:kaigejava)就來講講在main函數中怎么使用.

如果我們直接使用下面代碼:

ThreadPoolTaskScheduler();taskScheduler.setPoolSize(10);taskScheduler.setRemoveOnCancelPolicy(true);taskScheduler.setThreadNamePrefix("task-");ScheduledFuture<?>?scheduledFuture?=?taskScheduler.schedule(jobDTO,?cronTrigger);

在執行后,會報錯。錯誤信息:java.lang.IllegalStateException: ThreadPoolTaskScheduler not initialized

怎么解決呢?

import?org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import?org.springframework.scheduling.support.CronTrigger;public?class?MainApplication?{public?static?void?main(String[]?args)?{//?初始化?ThreadPoolTaskSchedulerThreadPoolTaskScheduler?taskScheduler?=?new?ThreadPoolTaskScheduler();taskScheduler.setPoolSize(10);taskScheduler.setRemoveOnCancelPolicy(true);taskScheduler.setThreadNamePrefix("task-");//?初始化你的任務和觸發器(這里假設?jobDTO?和?cronTrigger?已經定義)Runnable?jobDTO?=?/*?Your?Runnable?implementation?*/;CronTrigger?cronTrigger?=?/*?Your?CronTrigger?implementation?*/;//?設置任務調度器taskScheduler.initialize();//?使用任務調度器調度任務taskScheduler.schedule(jobDTO,?cronTrigger);}
}

其實就是在調用任務器調度任務前執行taskScheduler.initializer()就可以了。

擴展:在Spring環境下使用ThreadPoolTaskScheduler

第一步:創建線程池配置

package?com.kaigejava.config;import?org.apache.commons.pool2.BasePooledObjectFactory;
import?org.apache.commons.pool2.PooledObject;
import?org.apache.commons.pool2.impl.DefaultPooledObject;
import?org.apache.commons.pool2.impl.GenericObjectPool;
import?org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import?org.springframework.context.annotation.Bean;
import?org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import?org.springframework.stereotype.Component;import?javax.script.ScriptContext;
import?javax.script.SimpleScriptContext;
import?java.time.Duration;/***?線程池的配置類*?@version?1.0*/
@Component
public?class?CollectTaskConfig?{@Bean(name?=?"collectTaskPool")public?ThreadPoolTaskScheduler?threadPoolTaskScheduler(){ThreadPoolTaskScheduler?threadPoolTaskScheduler?=?new?ThreadPoolTaskScheduler();threadPoolTaskScheduler.setPoolSize(30);threadPoolTaskScheduler.setRemoveOnCancelPolicy(true);threadPoolTaskScheduler.setThreadNamePrefix("task-");return?threadPoolTaskScheduler;}}

第二步:使用

@Resource(name?=?"collectTaskPool")
private?ThreadPoolTaskScheduler?taskScheduler;public?void?taskDoing(){//?初始化你的任務和觸發器(這里假設?jobDTO?和?cronTrigger?已經定義)Runnable?jobDTO?=?/*?Your?Runnable?implementation?*/;CronTrigger?cronTrigger?=?/*?Your?CronTrigger?implementation?*/;//?使用任務調度器調度任務taskScheduler.schedule(jobDTO,?cronTrigger);
}

通過上面兩步,就可以在Spring環境下使用帶有定時任務的線程池了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

10.vue3項目(十):spu管理頁面的sku的新增和修改

目錄 一、sku靜態頁面的搭建 1.思路分析 2.代碼實現 3.效果展示

微信小程序 長按錄音+錄制視頻

<view class"bigCircle" bindtouchstart"start" bindtouchend"stop"><view class"smallCircle {{startVedio?onVedio:}}"><text>{{startVedio?正在錄音:長按錄音}}</text></view> </view> <…

排序算法:【選擇排序]

一、選擇排序——時間復雜度 定義&#xff1a;第一趟排序&#xff0c;從整個序列中找到最小的數&#xff0c;把它放到序列的第一個位置上&#xff0c;第二趟排序&#xff0c;再從無序區找到最小的數&#xff0c;把它放到序列的第二個位置上&#xff0c;以此類推。 也就是說&am…

軟件項目管理---胡亂復習版

范圍控制的一個重點是避免需求的不合理擴張。(√)一個任務原計劃2個人全職工作2周完成,而實際上只有一個人參與這個任務,到第二周末這個人完成了任務的75%,那么:BCWS = 4人周,ACWP = 2人周,BCWP = 3人周。CV = 1,SV = -1。 【在項目管理中,BCWS、ACWP和BCWP是用來衡量…

微服務測試是什么?

微服務測試是一種特殊的測試類型&#xff0c;因為它涉及到多個獨立的服務。以下是進行微服務測試的一般性步驟&#xff1a; 1. 確定系統架構 了解微服務架構對成功測試至關重要。確定每個微服務的職責、接口、依賴項和通信方式。了解這些信息可以幫助您更好地規劃測試用例和測…

ip ssl證書怎么更換ip地址

ip ssl證書是一種數字證書&#xff0c;為只有公網ip地址的站點建立安全、加密的通信通道。它通常由權威的證書頒發機構&#xff08;CA&#xff09;頒發&#xff0c;并用于驗證網站的身份和安全性。ip ssl證書的主要目的是保護敏感信息&#xff0c;如信用卡號、用戶名和密碼等&a…

IO部分筆記

IO 概述 IO: 存儲和讀取數據的解決方案 作用: 用于讀寫文件中的數據(可以讀寫文件, 或網絡中的數據) IO流的分類 按流的方向: 輸入流, 輸出流 按操作文件類型: 字節流: 可以操作所有類型的文件 字符流: 只能操作純文本文件 純文本文件: windows自帶的記事本打開能讀懂…

react Hooks(useRef、useMemo、useCallback)實現原理

Fiber 上篇文章fiber簡單理解記錄了react fiber架構&#xff0c;Hooks是基于fiber鏈表來實現的。閱讀以下內容時建議先了解react fiber。 jsx -> render function -> vdom -> fiber樹 -> dom vdom 轉 fiber 的過程稱為 recocile。diff算法就是在recocile這個過程…

認識lambda架構(架構師考試復習)

Lambda架構主要分為三層&#xff0c;批處理層、加速層和服務層。 如下圖所示&#xff1a; &#xff08;1&#xff09;批處理層&#xff08;Batch Layer&#xff09;&#xff1a;存儲數據集&#xff0c;在數據集上預先計算查詢函數&#xff0c;并構建查詢對應的view。Batch Lay…

mysql 5.7 Unknown column ‘password‘ in ‘field list‘

問題現象&#xff1a; 執行sql : select user&#xff0c;host,password from user&#xff1b;時提示 ERROR 1054(42S22):Unknown column password in field list 現象如下圖所示&#xff1a; mysql 5.7開始 密碼字段用&#xff1a;authentication_string

Redis哨兵模式:什么是哨兵模式、哨兵模式的優缺點、哨兵模式的主觀下線和客觀下線、投票選舉、Redis 哨兵模式搭建

文章目錄 什么是哨兵模式哨兵模式的優缺點主觀下線和客觀下線投票選舉哨兵模式場景應用Redis version 6.0.5 集群搭建下載文件環境安裝解壓編譯配置文件啟動關閉密碼設置 什么是哨兵模式 哨兵模式是Redis的高可用解決方案之一&#xff0c;它旨在提供自動故障轉移和故障檢測的功…

2023年四川網信人才技能大賽 實操賽Writeup

文章目錄 Crypto比base64少的baseaffine簡單的RSA Misc不要動我的flagSimpleUSB猜猜我是誰不聰明的AI Pwngetitezbbstack Reverse誰的DNA動了Dont Touch Me Weblittle_gamejustppbezbbssmart 題目附件&#xff0c;文章末尾微信公眾號點點關注親&#xff0c;謝謝親~ 題目附件鏈接…

C++ Qt開發:PushButton按鈕組件

Qt 是一個跨平臺C圖形界面開發庫&#xff0c;利用Qt可以快速開發跨平臺窗體應用程序&#xff0c;在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置&#xff0c;實現圖形化開發極大的方便了開發效率&#xff0c;本章將重點介紹QPushButton按鈕組件的常用方法及靈活運用。 …

電子眼+無人機構建平安城市視頻防控監控方案

電子眼&#xff08;也稱為監控攝像機&#xff09;可以通過安裝在城市的不同角落&#xff0c;實時監控城市的各個地方。它們可以用于監測交通違法行為、監控公共場所的安全以及實時監測特定區域的活動情況。通過電子眼的應用&#xff0c;可以幫助警方及時發現并響應各類安全事件…

Ubuntu安裝TensorRT

文章目錄 1. 安裝CUDAa. 下載CUDAb. 安裝CUDAc. 驗證CUDA 2. 安裝CUDNNa. 下載CUDNNb. 安裝CUDNNc. 驗證CUDNN 3. 安裝TensorRTa. 下載TensorRTb. 解壓TensorRTc. 安裝TensorRTd. 安裝uff和graphsurgeone. 驗證是否安裝成功f. 備注 關注公眾號&#xff1a;『AI學習星球』 回復&…

spring boot學習第五篇:spring boot與JPA結合

1、準備表&#xff0c;創建表語句如下 CREATE TABLE girl (id int(11) NOT NULL AUTO_INCREMENT,cup_Size varchar(100) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4…

C語言-鏈表_基礎

鏈表-基礎 1. 數組 1.1 靜態數組 例子:int nums[5] {0};struct person ps[5]; 缺點:1,無法修改地址2,無法動態定義長度3,占用內存過大或過小4,增刪速度慢 優點數組的內存是連續開辟的,所以讀取速度快1.2 動態數組 例子:int *nums (int *) calloc(5,sizeof(int));struct p…

Vmware突然無法獲取IP(二)

一 測試環境 宿主機&#xff1a; window10Vmware 17 proUbuntu 18.04虛擬機中 二 問題 之前虛擬機可以正常使用。過程中&#xff0c;安裝了docker&#xff08;不確定是否和這個有關系&#xff09;第二天開啟虛擬機時&#xff0c;發現網口為down的狀態。將網口up后&#xff0…

python第三方庫——openpyxl

Bokeh是一個Python庫&#xff0c;用于對Excel 2010 xlsx/xlsm/xltx/xltm文件進行讀寫操作。 官網對該工具的介紹為&#xff1a; openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.It was born from lack of existing library to read/write…

使用Java實現漢諾塔問題

文章目錄 漢諾塔問題 今天和大家來看看漢諾塔問題&#xff0c;這也是一個經典的算法 漢諾塔問題 分治算法經典問題&#xff1a;漢諾塔問題 漢諾塔的傳說 漢諾塔&#xff1a;漢諾塔&#xff08;又稱河內塔&#xff09;問題是源于印度一個古老傳說的益智玩具。大梵天創造世界的…