Executors几种创建方式

https://www.cnblogs.com/yasong/p/9318522.html

线程池数如何设置

https://blog.csdn.net/u013276277/article/details/82630336

https://www.cnblogs.com/cherish010/p/8334952.html

示例

  • 实现Runnable方式
public class WorkThread implements Runnable{
    private String mobile = "";
    private Integer num;

    @Override
    public void run() {
        String reqData = mobile;
        try {
            System.out.println(Thread.currentThread().getName()+"线程"+"["+num+"]request data :"+reqData);
            String respStr = accessScoreService(reqData);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    /**
     * 具体业务处理逻辑
     *
     * @param reqData
     * @return
     */
    private String accessScoreService(String reqData) {
        return Thread.currentThread().getName()+"线程执行任务";
    }

    public WorkThread(String _mobile,Integer num){
        this.mobile = _mobile;
        this.num=num;
    }
    public WorkThread(){
    }
}

测试:

/**
     * 测试多线程
     */
    @Test
    public void testExecutors(){
            List<String> mobList=new ArrayList<>();
            for(int i=10;i<100;i++){
                String tel="186544444"+i;
                mobList.add(tel);
            }
            Integer tps=10;
            ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
            int sleepTime = 1000 / tps;

            for(Integer i=0,size=mobList.size();i<size;i++){
                String mob=mobList.get(i);
                fixedThreadPool.execute(new WorkThread(mob, i));
                /*try {
                    Thread.sleep(sleepTime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }*/
            }
            System.out.println("线程初始化完成");
    }
  • 实现Callable方式
public class WorkForCallable implements Callable<String> {

    private String mobile;

    @Override
    public String call() throws Exception {
        System.out.println("************开始执行"+"["+Thread.currentThread().getName()+"]"+"线程=======处理任务:"+mobile);
        return "["+Thread.currentThread().getName()+"]"+"线程处理成功";
    }

    public WorkForCallable(String mobile){
        this.mobile=mobile;
    }
    public WorkForCallable(){
    }
}

测试:

@Test
    public void testExecutors1() throws InterruptedException, ExecutionException {
        List<String> mobList=new ArrayList<>();
        for(int i=10;i<100;i++){
            String tel="186544444"+i;
            mobList.add(tel);
        }
        List<FutureTask<String>> futureTaskList = new ArrayList<FutureTask<String>>();
        ExecutorService excutorService = Executors.newFixedThreadPool(10);
        for(int a=0;a<mobList.size();a++){
            String str=mobList.get(a);
            FutureTask<String> futureTask = new FutureTask<String>(new WorkForCallable(str));
           // futureTaskList.add(futureTask);
            excutorService.submit(futureTask);
            String s = futureTask.get();
            System.out.println("************完成结果"+s+"手机号:"+str);
        }
    }

学习链接

https://blog.csdn.net/m0_37825799/article/details/79088596

https://www.cnblogs.com/zengyuanjun/p/8094610.html

https://blog.csdn.net/majunzhu/article/details/83013780

https://blog.csdn.net/qq_32725403/article/details/79488068

多线程之Executors基本使用的更多相关文章

  1. java 线程之executors线程池

    一.线程池的作用 平时的业务中,如果要使用多线程,那么我们会在业务开始前创建线程,业务结束后,销毁线程.但是对于业务来说,线程的创建和销毁是与业务本身无关的,只关心线程所执行的任务.因此希望把尽可能多 ...

  2. Java基础-进程与线程之Thread类详解

    Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...

  3. JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止

    JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止 背景 当单线程的程序发生一个未捕获的异常时我们可以采用try....catch进行异常的捕获,但是在多线程环境 ...

  4. iOS多线程之8.NSOPeration的其他用法

      本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...

  5. python 线程之 threading(四)

    python 线程之 threading(三) http://www.cnblogs.com/someoneHan/p/6213100.html中对Event做了简单的介绍. 但是如果线程打算一遍一遍 ...

  6. python 线程之 threading(三)

    python 线程之 threading(一)http://www.cnblogs.com/someoneHan/p/6204640.html python 线程之 threading(二)http: ...

  7. python 线程之_thread

    python 线程之_thread _thread module: 基本用法: def child(tid): print("hello from child",tid) _thr ...

  8. Java多线程之ConcurrentSkipListMap深入分析(转)

    Java多线程之ConcurrentSkipListMap深入分析   一.前言 concurrentHashMap与ConcurrentSkipListMap性能测试 在4线程1.6万数据的条件下, ...

  9. 【C#】线程之Parallel

    在一些常见的编程情形中,使用任务也许能提升性能.为了简化变成,静态类System.Threading.Tasks.Parallel封装了这些常见的情形,它内部使用Task对象. Parallel.Fo ...

随机推荐

  1. 手把手教你写vue插件并发布(一)

    vue的插件开发 这篇文章较长,需要一定的阅读时间.这里有一份改善版本的插件笔记,在一个项目下完成开发.测试.发布的全过程.https://www.cnblogs.com/adouwt/p/96555 ...

  2. react - web + webpack4 从0构建

    https://www.jianshu.com/p/91a4214b913b  文章https://github.com/Liao123/react-web 可运行的代码 dev分支

  3. LVS原理详解(3种工作方式8种调度算法)--老男孩

    一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...

  4. 金蝶k3wise 核算项目、辅助资料

    金蝶k3wise 核算项目.辅助资料 ----核算项目信息 select * from t_ItemClass ----核算项目字段信息 --锁定字段 ----核算项目内容表 select * fro ...

  5. 蒙特卡诺近似与PBM

    介绍蒙特卡诺近似的例子代码 #include<fstream> #include<iostream> #include<cstdlib> #include<c ...

  6. react-native项目中集成react-native-camera插件

    1. 安装 yarn add react-native-camera 2. 手动关联 (1)在AndroidManifest.xml中添加权限配置 <uses-permission androi ...

  7. UOJ#55. 【WC2014】紫荆花之恋 点分树 替罪羊树 平衡树 splay Treap

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ55.html 题解 做法还是挺容易想到的. 但是写的话…… 首先这种题如果只要求一棵树中的满足条件的点数( ...

  8. MariaDB报错Plugin 'InnoDB' init function returned error.解决方案

    重新安装MariaDB后,服务一直启动不起来,查看日志有以下错误: InnoDB: No valid checkpoint found. InnoDB: If you are attempting d ...

  9. CSS-Sass

    什么是css预处理器

  10. ISP PIPLINE (五) Denoise

    what is the Denoise? Denoise就是图像去噪,平滑图像,并保留图像细节. why does Denoise? 图像在采集并转换为数字信号的过程会引入一些噪声,这些噪声会让图片看 ...