Spring與多執行緒

2022-04-03 05:04:43 字數 1045 閱讀 8936

還是用實際的專案來舉個栗子。

作為資料服務,入口是乙個webservices的介面,這裡因為歷史原因,還是採用soap方式。

入口如下:

@webmethod

public feedresult send(nocpacket nocpacket)

這裡採用生產者和消費者的模式,其中的const.nocqueue,是我們的blockingqueue,作為資料緩衝區。

既然如此,還應該有乙個消費者。

之前說過,我們要在系統啟動的時候,就去queue中取我們的資料,有則拿出來,作為業務處理,沒有則阻塞,等待資料到來。同時,拿到資料後,將這些資料入庫。

這裡需要兩個類,乙個是隨系統一起啟動的,暫且叫守護程式吧。另乙個是做主業務的。

守護程式**:

/**

* created by wl on 15-6-17.

* 業務消費者

*/@component

public class business

}

處理業務的類:

/**

* created by wl on 15-6-17.

* 業務處理主方法

*/public class busitask implements callable>

public blockingqueuecall() throws exception

}

此處,守護程式是隨系統一起啟動的,這一點可以用spring配置。這個守護程式不能有特殊性,它不能是我們自建的乙個執行緒,也不能new乙個方法,再去呼叫dobusi,因為這樣就不受spring管理了。它的第乙個目的是拿到注入的service。

這兩個類,採用future和callable的方式進行非同步執行緒處理的。如果直接去處理busitask中的任務,就會阻塞到queue的take上。同時,通過守護程式,busitask也可以拿到services,進行入庫等操作。

spring是可以進行多執行緒開發的,目前沒使用過,以後有時間好好研究下。

spring 多執行緒

一 threadpooltaskexecutor threadpooltaskexecutor的配置在網上找了很多解釋沒找到,看了下threadpoolexecutor的配置,名字差不多,應該含義也差不多。只不過threadpooltaskexecutor對 threadpoolexecutor做了...

Spring系列(五)Spring的多執行緒

spring通過任務執行器 taskexecutor 來實現多執行緒和併發程式設計。使用thredpooltaskexecutor可以實現基於執行緒池的taskexecutor。為了實現非同步任務,可以在配置類中通過 enable開啟對非同步任務的支援,並通過實際執行的bean的方法使用 async...

spring多執行緒事務控制

主要測試內容是兩個執行緒同時對乙個表操作時,後乙個ccc類中的select之後commit,是否會對aaa類的insert操作rollback產生影響。測試結果是互不影響。spring xml 配置檔案 xmlns xsi xsi schemalocation spring beans 3.0.xs...