2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
用線程池唄!
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) 是創(chuàng)建了一個(gè)固定大小為10的線程池.
然后通過(guò) executorService.execute( Runnable runnable) 的方式提交一個(gè)任務(wù), 這樣可以最大并行地執(zhí)行10個(gè)任務(wù). 如果需要并行的線程更多, 那么 Executors.newFixedThreadPool(threadCount) 的參數(shù)可以設(shè)置大一些.
我要吐槽一下, 你應(yīng)該是把 Runnable 接口和 Thread 類混淆了吧? 實(shí)現(xiàn) Runnable 接口的類不代表它就是在一個(gè)新的線程中運(yùn)行, 你必須顯示地地將 Runnable 提交到新線程中執(zhí)行, 例如 executorService.execute(runnable) 或 new Thread(runnable).start().

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
不能直接調(diào)用run方法,線程的執(zhí)行要通過(guò)Thread.start方法。直接調(diào)用run方法和調(diào)用普通方法沒(méi)有區(qū)別。
new Thread(tLbData).start()
添加回答
舉報(bào)