java多线程处理,循环遍历耗时操作

package com.hbis.ttie.lbs.ctrl.rest;

import com.hbis.ttie.core.util.UuidUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Test {
    /*遍历需要耗时较长的处理*/
    public static void main(String[] args) throws Exception{
        /*模拟操作开始----》*/
        ExecutorService executorService = Executors.newFixedThreadPool(1000);//设置1000个线程
        List<Future<Result>> results = new ArrayList<Future<Result>>();

        for(int k=0;k<10000;k++){
            //拼装入参
            User user = new User();
            user.setId(UuidUtils.generate16bitUUID());
            user.setName("张三");
            user.setNo(k + "&" + k);

            Action task = new Action(user);
            results.add(executorService.submit(task));
        }

        executorService.shutdown();

        for (Future<Result> resultFuture: results){
            while (true) {
                if(resultFuture.isDone() && !resultFuture.isCancelled()) {

                    //多线程处理后,返回的数据
                    Result result = resultFuture.get();
                    System.out.println(result.getKey()+"|"+result.getMsg());

                    break;
                }else{
                    Thread.sleep(100);
                }
            }
        }

    }

}
package com.hbis.ttie.lbs.ctrl.rest;

import java.util.concurrent.Callable;

public class Action implements Callable<Result> {

    private User user;

    public Action(User user){
        this.user = user;
    }

    @Override
    public Result call() throws Exception {
        Result result = new Result();

        try {
            //睡眠6s,模拟耗时操作
            Thread.currentThread().sleep(6000);

            //拼装入参,模拟返回数据
            result.setKey(user.getId());
            result.setMsg(user.getName()+user.getNo());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        return result;
    }
}
package com.hbis.ttie.lbs.ctrl.rest;

/*入参类*/
public class User {

    private String id;
    private String name;
    private String no;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }
}
package com.hbis.ttie.lbs.ctrl.rest;

/*结果类*/
public class Result {

    private String key;
    private String msg;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值