ThreadPoolExecutor注意事項

2021-10-13 07:48:01 字數 2013 閱讀 7268

threadpoolexecutor的用法網上一搜一大堆, 但是對於ctrl + c/v的你來說你真的知道應該如何使用嗎?

下面給大家分享一下我遇到到由於threadpoolexecutor使用不當造成的伺服器宕機事件!

希望大家可以引以為鑑,做乙個對技術保持敬畏之心的人!

由於業務需要,需要定時對資料中的資料進行處理.所以想使用執行緒池提公升執行任務的速度.

具體**如下:

@scheduled

(cron =

"$")

public

void

transfer()

long keepalivetime =1;

threadpoolexecutor executor =

newthreadpoolexecutor

( size, size, keepalivetime, timeunit.seconds,

newarrayblockingqueue

<

>

(size));

// 預啟動所有核心執行緒

for(department department: departmentlist)

}private

void

dotransfer

(department department)

上述**執行幾天後伺服器就莫名的崩潰了.

於是我先是對服務進行恢復.

然後使用jstack和jmap命令對jvm執行緒和堆進行分析.

結果發現記憶體中有大量的執行緒池持有的執行緒未釋放.

所以初步斷定是由於執行緒池未釋放造成的記憶體洩漏問題.

自己在本地模擬**測試如下:

public

class

testthreadpoolexecutor

}private

static

void

dotask()

);}}

}

測試結果如下執行緒截圖

監視檢視

執行緒dump截圖

從上面我們可以驗證出threadpoolexecutor雖然在方法中建立,方法執行完出棧之後,執行緒池並不會被銷毀.因為任務執行完之後執行緒會阻塞在獲取任務的地方.

執行緒池只初始化一次.後續直接使用!

public

class

threadpool

public

static

void

submittask

(runnable runnable)

}

@scheduled

(cron =

"$")

public

void

transfer()

for(department department: departmentlist)

}private

void

dotransfer

(department department)

pytorch fine tuning注意事項

前言 這篇文章算是論壇pytorch forums關於引數初始化和finetune的總結,也是我在寫 中用的算是 最佳實踐 吧。最後希望大家沒事多逛逛論壇,有很多高質量的回答。引數初始化 引數的初始化其實就是對引數賦值。而我們需要學習的引數其實都是variable,它其實是對tensor的封裝,同時...

PHP Open Flash Chart注意事項

1.在html頁面必須src正確的swfobject.js的路徑 可以用firebug檢視絕對路徑是否正確 2.在html頁面必須指定正確的swfobject使用時的open flash chart.swf的位置 可以用firebug檢視絕對路徑是否正確 3.在html頁面必須制定正確的data f...

ThreadPoolExecutor使用小結

記錄一下那幾個引數的理解,網上說了亂七八糟,詳細看參考文件,很詳細很明白,沒什麼好說的。corepoolsize,maximumpoolsize,keepalivetime keepalivetime workqueue queue blocksize 執行執行緒後,會判斷數量是否超出corepoo...