2 回答
TA贡献1827条经验 获得超7个赞
用线程池呗!
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()
添加回答
举报