spring執行緒池在新的執行緒中獲取不到注入的例項

2021-08-10 15:16:14 字數 846 閱讀 9311

spring執行緒池獲取注入的例項問題

1、問題描述:

配置spring的執行緒池,在呼叫執行緒池時,建立的新執行緒中獲取不到已注入的例項,所以在呼叫方法時會報空指標異常。

2、程式描述:

呼叫執行緒池地方的**如圖如下:

solrindextask為實現了runnable介面的執行緒例項,內容截圖如下:

程式很簡單,在執行run方法的時候,從spring容器中獲取到service,呼叫service下的方法,而程式在執行時,就在service呼叫方法的時候報了空指標,debug看了一下,發現service為空,意思是從spring容器中取不到service例項。

3、解決方案:

在網上查了一下,總結了一下解決方案,本人已經實踐過的可行方案有兩個,方案內容如下。

(1)、在實現runnable介面的類中新增乙個靜態的**塊,之後進行spring容器的重新掃瞄,個人理解就是在新的執行緒中重新搞出來乙個spring的容器,這樣程式呼叫就沒問題了,**內容截圖如下:

該方式可以解決獲取spring例項為空的問題,本人已親自試驗過。

spring中的執行緒池

spring task execution pool core size 10 max size 300 queue capacity 256 keep alive 600000 thread name prefix db service task core size 表示當執行緒池中的執行緒數量沒...

Spring 執行緒池

spring 執行緒池 從例子開始講 corepoolsize 執行緒池至少有2個執行緒是啟動的,即使是空閒的也不會關閉。maxpoolsize 最大的執行緒數目,當corepoolsize繁忙時,會建立執行緒,啟動的總的執行緒數不能大於maxpoolsize queuecapacity queue...

在spring中引入執行緒池,設定執行緒優先順序。

在spring.xml 檔案中配置 id taskexecutor class org.springframework.scheduling.concurrent.threadpooltaskexecutor name corepoolsize value 2 name maxpoolsize va...