簡單可定製業務的執行緒類

2021-07-10 01:55:20 字數 2242 閱讀 8049

某些需要占用較長的執行時間可以用多執行緒非同步方式執行。我們可以為這些非同步任務賦予最大執行次數、執行時長限制、重試時間間隔等特性,以保證非同步任務不會在失敗的情況下一直占用系統資源不放。

我們可以設定乙個簡單的執行緒類作為父類來承載這些特性。**如下:

public

class

configurablethread

extends

thread

try

system.out.println("迴圈結束,退出");

return;

} catch (exception e)

}public

void

dorun() throws exception

private

boolean

execuble()

if(enableexelimit &&

this.trycount > this.exelimit)

if(successflag)

return

true;

}public

final configurablethread enabletimelimit()

public

final configurablethread disabletimelimit()

public

final configurablethread enableexelimit()

public

final configurablethread disableexelimit()

public

final configurablethread setexelimit(integer exelimit)

public

final configurablethread settimelimit(long timelimit)

public

final configurablethread setinterval(long interval)

}

這樣在建立具體的非同步任務**時就可以只專注於業務實現了。

public

class

taskone

extends

configurablethread

@override

public

void

dorun()

}

其中dorun是必須重寫的方法,如果不重寫則會執行父類的dorun, 即:丟擲異常。

效果如下:

在具體應用時候,由於設定特性的方法返回物件自身,因此可以快速設定物件的屬性:

new taskone(1)//指定id

.enableexelimit()//啟用最大執行次數限制

.enabletimelimit()//啟用最大執行時間限制

.settimelimit(1000l)//設定最大執行次數

.setinterval(30l);//設定最大執行時間

具體效果如下:

具體應用可以直接呼叫新例項或者結合執行緒池使用:

//直接使用

new taskone(1)

.enableexelimit()

.enabletimelimit()

.settimelimit(1000l)

.setexelimit(3)

.setinterval(30l)

.start();

//執行緒池

new taskone().enabletimelimit().settimelimit(5500l).setinterval(30l).start();

blockingqueue queue = new linkedblockingqueue(3);

pool.execute(

new taskone(i)

.enableexelimit()

.setexelimit(3)

.setinterval(1000l)

);

簡單的執行緒基類

typedef unsigned winapi pthreadfun lpvoid lpparameter class cthread cthread void void start void void stop void const static dword winapi threadfun lp...

Domino中用可定製表單顯示定製的錯誤訊息

要定製顯示給 web 使用者的錯誤訊息外觀,向資料庫中新增定製的錯誤訊息表單。如果發生錯誤條件,且其定製表單存在,則 domino 使用定製表單來顯示錯誤訊息。否則,domino 使用預設錯誤訊息表單。新增到資料庫的訊息表單將覆蓋由管理員設定的伺服器範圍內的訊息。要在表單和錯誤條件之間建立關聯,建立...

執行緒對應的業務

1.updatem8vouchertaskfj 銀企互聯系統對應返回財輔的類 孟昭 反饋問題,transferbilllist表中銀行返回狀態是成功,但是沒有為財輔反饋資訊 原因是沒有對應的交易明細記錄 tradedetail td servicefactory.getbanktradedetail...