JAVA 中springboot多线程

记录两种多线程,带返回值以及不带返回值(异步)多线程

1 @Async()

可以指定线程池,建议指定线程池 ,方法调用处和方法不能在同一个类,不然不生效

 	@Async("batchTaskExecutor")
  	public void batchSendMessage() {
		// 这是方法体
	}
---------------------------------------------------------------------------------------------
// 根据线程池拆分任务条数 
List<List<UserDTO>> partition = Lists.partition(userDTOS, 1000);
	for (List<UserDTO> list : partition) {
	// 调用出
		userService.batchSendMessage();
	}

2.使用callable实现带返回值的

// 获取线程池
 ThreadPoolTaskExecutor threadPoolTaskExecutor = this.threadPoolTaskExecutor.taskExecutor();
 		// 返回id记录容器
        List<String> ids=new ArrayList<>();
        Future submit=null;
        for (int i = 0; i < illionExcl.size(); i++) {
            submit = threadPoolTaskExecutor.submit(new ExportIllionFilesDevCallable(illionExcl.get(i), i, illionExcl,illionFilesExportService));
            Object o = submit.get();
            if (o!=null){
                ids.add(o.toString());
            }
        }
        while (!submit.isDone()){

        }

需要实现Callable

public class ExportIllionFilesDevCallable implements Callable {
    private IllionFilesExportDTO illionExcl;
    private List<IllionFilesExportDTO> illionExcls;
    private int index;
    private static final String FILE_PATH="/data/files/";
    private static final String FILE_PATH_DEV="/data/wwwroot/";


    private IllionFilesExportService illionFilesExportService;
    @Override
    public Object call() throws IOException {
        String jsonFileUrl = illionExcl.getJsonFileUrl();
        String jsonDecodeKey = illionExcl.getJsonDecodeKey();
        Long createDate = illionExcl.getCreatedDate();
        Long jsonFileLength = illionExcl.getJsonFileLength();
        String htmlFileName = illionExcl.getHtmlFileName();
        String jsonFileName = illionExcl.getJsonFileName();
        Long id = illionExcl.getId();
        if (createDate!=null){
            return id;
        }
        int i=illionFilesExportService.updateIllionFilesExportStatus(id, StaticDataEnum.ILLION_FILES_EXPORT1.getCode());
        return null;
    }
    public ExportIllionFilesDevCallable(IllionFilesExportDTO illionExcl, int i, List<IllionFilesExportDTO> illionExcls,IllionFilesExportService illionFilesExportService){
        this.illionExcl=illionExcl;
        this.illionExcls=illionExcls;
        this.index=i;
        this.illionFilesExportService=illionFilesExportService;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
07-22 680

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值