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...