2 回答

TA貢獻1827條經驗 獲得超8個贊
用線程池唄!
private ExecutorService executorService = Executors.newFixedThreadPool(10);
public void addUserACard() {
ThreadLbData tLbData = null;
DbBean dbBean = null ;
List<DataBase> listData = dataDAO.findHql(" from DataBase where state = '1' order by createDate desc ");
DataBase data = null ;
if(listData != null && listData.size()> 0){
for (int i = 0; i < listData.size(); i++) {
data = listData.get(i);
dbBean = createDbBean(data);
executorService.execute(tLbData);
}
}
}
private ExecutorService executorService = Executors.newFixedThreadPool(10);
上面的 Executors.newFixedThreadPool(10) 是創建了一個固定大小為10的線程池.
然后通過 executorService.execute( Runnable runnable) 的方式提交一個任務, 這樣可以最大并行地執行10個任務. 如果需要并行的線程更多, 那么 Executors.newFixedThreadPool(threadCount) 的參數可以設置大一些.
我要吐槽一下, 你應該是把 Runnable 接口和 Thread 類混淆了吧? 實現 Runnable 接口的類不代表它就是在一個新的線程中運行, 你必須顯示地地將 Runnable 提交到新線程中執行, 例如 executorService.execute(runnable) 或 new Thread(runnable).start().

TA貢獻1873條經驗 獲得超9個贊
不能直接調用run方法,線程的執行要通過Thread.start方法。直接調用run方法和調用普通方法沒有區別。
new Thread(tLbData).start()
添加回答
舉報