執行緒池 任務延時執行

2021-09-29 15:05:12 字數 1277 閱讀 4288

我在做乙個匯入功能,匯入的邏輯都是呼叫的頁面介面。

介面執行邏輯:將資料儲存到資料庫,然後再呼叫job任務加工歷史資料。

使用者在頁面上操作是ok的,畢竟每操作一下,介面最多呼叫一次。

但是匯入就不一樣了,相當於使用者一直在對著頁面點點點~這會導致後面歷史任務的加工出現問題。

在匯入的時候,我需要先讓基本資料儲存到資料庫就ok,等所有匯入都完成後,我再一併去加工歷史任務。

所以,設定乙個延遲任務,要求30秒後我再去執行歷史任務加工。

// 執行緒池定義

scheduledexecutorservice scheduledexecutorservice = executors.

newscheduledthreadpool(2

);scheduledexecutorservice.

schedule

(new

triggerprocesstask

(fx, dms, taskparams)

,30000

, timeunit.milliseconds)

;

任務類:triggerprocesstask

public

class

triggerprocesstask

implements

runnable

public

triggerprocesstask

(zkzxsjfx fx, list

dms, map

bizparams)

@override

public

void

run(

)}

scheduledexecutorservice.schedule(new triggerprocesstask(fx, dms, taskparams), 30000, timeunit.milliseconds);

執行緒池往往處理的是多個任務,引數fx, dms, taskparams一定是每個任務乙個物件,不要乙個物件給賦值給很多任務。

舉例:taskparams是乙個map,那麼每new triggerprocesstask一次,就需要重新賦值乙個新的map物件。否則會出現多個執行緒訪問同乙個變數,也就是變數共享了,這樣就會導致執行緒執行的時候引數往往都是取的最新值。

一般做法:

for(.

..)

Linq延時執行

本文向大家介紹linq延時執行,可能好多人還不了解linq延時執行,沒有關係,看完本文你肯定有不少收穫,希望本文能教會你更多東西。linq的大多數查詢運算子的乙個重要特性就是,他們並不是在構建的時候就立即執行,而是在列舉是執行,換句話說,當列舉變數呼叫movenext時執行。在構建查詢之後,另外插入...

sql waitfor 延時執行

看msdn 語法為 waitfor 以下示例在晚上 10 20 22 20 執行儲存過程sp update job。datetime value is not allowed.不能指定日期 waitfor time 22 20 execute sp update job 以下示例在兩小時的延遲後執行...

Python 定時執行執行緒 執行任務

最常用的是以下的方法。不過缺點是sleep函式堵塞了主線程,會造成無妨同時執行其他的程式。usr bin env python encoding utf 8 import time deftask print task deftimer n while true print time.strftim...