加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ThreadPoolTaskExecutor线程池使用示例

(2019-02-28 16:53:26)
分类: java并发
简单示例

public class Test {

public static void main(String[] args) {
ThreadPoolTaskExecutor poolTaskExecutor= new ThreadPoolTaskExecutor();
poolTaskExecutor.initialize(); //必须初始化,否则报 ThreadPoolTaskExecutor not initialized
poolTaskExecutor.setCorePoolSize(10);//默认1
poolTaskExecutor.setMaxPoolSize(30);//默认2^32-1

List> writeSqMxftList = Lists.newArrayList();
Integer arr[]={1,2,3,4};
List list = Arrays.asList(arr);

for (Integer l : list) {
FutureTask ft = new FutureTask(new Callable() {
@Override
public Integer call() {
int nums = 0;
while (nums < 100) {

nums ++;
}
System.out.println(nums);
return nums;
}
});

writeSqMxftList.add(ft);
poolTaskExecutor.execute(ft);
}

int dataNums = 0;
for (FutureTask ft : writeSqMxftList) {
try {
dataNums += ft.get();
} catch (Exception e) {
}
}
System.out.println("dataNums"+dataNums);
//线程池使用完不销毁的话,它会一直保持连接状态
poolTaskExecutor.destroy();
}
}
执行结果
Connected to the target VM, address: '127.0.0.1:58579', transport: 'socket'
16:43:51.734 [main] INFO  o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService 
100
100
100
100
dataNums400
16:43:54.225 [main] INFO  o.s.s.c.ThreadPoolTaskExecutor - Shutting down ExecutorService
Disconnected from the target VM, address: '127.0.0.1:58579', transport: 'socket'

项目实际应用:

    // 多线程保存申请明细
List> writeSqMxftList = Lists.newArrayList();
for (final List sbjbjgdms : sbjbjgdmLt) {
FutureTask ft = new FutureTask(new Callable() {
@Override
public Integer call() {
paramMapRk.put("sbjbjgDms", sbjbjgdms);
int count = 0;
int nums = 0;
List pcsjList = null;
while (count < ZsSjrkfkConstants.WHILE_COUNT) {
// 分页获取上解反馈数据
pcsjList = SqlKit.on(nativeSqlRepository).sql(querySql).mapParams(paramMapRk)
.getObjectList(ZsJfmxFkPcsjDTO.class);
if (CollectionUtils.isNotEmpty(pcsjList)) {
if (EZsQzFkQdlx.DW.getCode().equals(qdlx)
|| EZsQzFkQdlx.DWZG.getCode().equals(qdlx)) {
zsDwSjfkService.saveSjfkPcsjByDTO(pcsjList, qdId, qdlx);
} else if (EZsQzFkQdlx.ZG.getCode().equals(qdlx)) {
zsZgSjfkService.saveSjfkPcsjByDTO(pcsjList, qdId);
} else if (EZsQzFkQdlx.CXJM_ZZJN.getCode().equals(qdlx)) {
zsCxjmSjfkService.saveSjfkPcsjByDTO(pcsjList, qdId, qdlx);
} else if (EZsQzFkQdlx.CXJM.getCode().equals(qdlx)) {
zsCxjmhzSjfkService.saveSjfkPcsjByDTO(pcsjList, qdId);
} else if (EZsQzFkQdlx.LHJYRY.getCode().equals(qdlx)) {
zsLhjySjfkService.saveSjfkPcsjByDTO(pcsjList, qdId);
} else if (EZsQzFkQdlx.CJDW.getCode().equals(qdlx)) {
zsCjdwSjfkService.saveSjfkPcsjByDTO(pcsjList, qdId, qdlx);
}
nums += pcsjList.size();
} else {
break;
}
count++;
}
return nums;
}
});
writeSqMxftList.add(ft);
sjxxfkfpTaskExecutor.execute(ft);
}
int dataNums = 0;
for (FutureTask ft : writeSqMxftList) {
try {
dataNums += ft.get();
} catch (Exception e) {
log.error(qdxxDTO.getQdLxMc() + qdxxDTO.getYwLxMc() + "多线程分批异常", e);
}
}
qdxxDTO.setClsjl(dataNums);
}



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有