import java.util.*;
import java.util.concurrent.Callable;

/**
 * @Description 行业管理部门统计
 * @Author WangKun
 * @Date 2020-11-25 13:50
 * @Version
 */
public class ThreadAdminDepartmentRiskLevel implements Callable {

    private String adminDepartment; // 参数,参数类型自定义
    private List<Object[]> fillInList;
 
    public ThreadAdminDepartmentRiskLevel(String adminDepartment, List<Object[]> fillInList ) {
        this.adminDepartment = adminDepartment;
        this.fillInList = fillInList;
    }

    /**
     * @param 
     * @Description 实现call方法,处理业务
     * @Throws
     * @Return void
     * @Date 2020-11-25 13:50
     * @Author WangKun
     **/
    @Override
    public Object call() throws Exception {
        // 返回类型(类型由开启线程时定义)
        Map<String, Integer> map = new HashMap<>();
        // 处理业务
        //{...}
        return map;
    }

}

 调用

// 在准备使用的地方开启线程 
ExecutorService executor = new ThreadPoolExecutor(2, 4,
                1L, TimeUnit.SECONDS,
                new LinkedBlockingQueue<>(3),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());

//CompletionService<类型定义什么,call方法的返回类型就是什么,一定要一样> 
        CompletionService<Map<String, Integer>> completion = new ExecutorCompletionService<>(executor);

   try {
         // 提交数据,交给线程处理
         completion.submit(new ThreadAdminDepartmentRiskLevel(adminDepartment, fillInList));
                // 获取返回值 completion.take().get()
                Map<String, Integer> map = completion.take().get();

        } catch (InterruptedException | ExecutionException e) {
            executor.shutdownNow();
            e.printStackTrace();
        } finally {
            executor.shutdown();
        }
        

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐