2013-01-18 22 views
0

我使用彈簧+冬眠在一個應用程序中工作休眠。 我有一個情況,我必須從1個表(狀態標誌0)中獲取一組記錄,處理它們中的每一個(將生成其他表的數據),然後將狀態標誌設置爲1。過程1代表與多線程

問題這一切都是由1個線程完成的,而且非常緩慢。我想實現讓我說我做了10個線程。他們每個人將採取一個記錄,處理,保存,完成。然後該過程將加速10次。 請看圖片。任何建議如何做到這一點?

----現狀---- http://imgur.com/DSgIy

------期望情況------ http://imgur.com/Myz5J

+0

你能發佈一些源/配置文件? 「慢」是什麼意思?你目前的速度是多少?什麼是可接受的速度?您對交易的要求如何?你需要所有的更新是一個接一個的原子,還是一個可接受的批處理方法? (說每1000條記錄只提交) – abalogh

回答

0

裹在一個Runnable過程的方法和執行它使用TaskExecutor。 您可以使用彈出任務命名空間或註釋等TaskExecutor參數(如線程池大小)進行遊戲,可供您選擇。

看到http://static.springsource.org/spring/docs/current/spring-framework-reference/html/scheduling.html

+0

謝謝,我的情況是這樣的, 那裏已經有一個石英計劃的線程池,每天讓5秒保持觸發器。 但是,如果每5秒執行一次任務,那麼數據庫將變得混亂起來,所以我使用原子布爾變量來只允許一個線程運行任務。 但是,那麼這個任務將獲得所有flag0項目(通過休眠),並做一切(因此慢)。如果我刪除原子布爾值,可能會發生這樣的情況,即2個石英線程試圖獲取所有flag0項並將它們並行處理。 任何想法同步第一個線程只獲得第一個flag0項目,然後第二個線程獲取下一個flag0項目? –