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方式
  1. public class WorkThread implements Runnable{
  2. private String mobile = "";
  3. private Integer num;
  4.  
  5. @Override
  6. public void run() {
  7. String reqData = mobile;
  8. try {
  9. System.out.println(Thread.currentThread().getName()+"线程"+"["+num+"]request data :"+reqData);
  10. String respStr = accessScoreService(reqData);
  11. } catch (Exception e) {
  12. System.out.println(e.getMessage());
  13. }
  14. }
  15.  
  16. /**
  17. * 具体业务处理逻辑
  18. *
  19. * @param reqData
  20. * @return
  21. */
  22. private String accessScoreService(String reqData) {
  23. return Thread.currentThread().getName()+"线程执行任务";
  24. }
  25.  
  26. public WorkThread(String _mobile,Integer num){
  27. this.mobile = _mobile;
  28. this.num=num;
  29. }
  30. public WorkThread(){
  31. }
  32. }

测试:

  1. /**
  2. * 测试多线程
  3. */
  4. @Test
  5. public void testExecutors(){
  6. List<String> mobList=new ArrayList<>();
  7. for(int i=10;i<100;i++){
  8. String tel="186544444"+i;
  9. mobList.add(tel);
  10. }
  11. Integer tps=10;
  12. ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
  13. int sleepTime = 1000 / tps;
  14.  
  15. for(Integer i=0,size=mobList.size();i<size;i++){
  16. String mob=mobList.get(i);
  17. fixedThreadPool.execute(new WorkThread(mob, i));
  18. /*try {
  19. Thread.sleep(sleepTime);
  20. } catch (InterruptedException e) {
  21. e.printStackTrace();
  22. }*/
  23. }
  24. System.out.println("线程初始化完成");
  25. }
  • 实现Callable方式
  1. public class WorkForCallable implements Callable<String> {
  2.  
  3. private String mobile;
  4.  
  5. @Override
  6. public String call() throws Exception {
  7. System.out.println("************开始执行"+"["+Thread.currentThread().getName()+"]"+"线程=======处理任务:"+mobile);
  8. return "["+Thread.currentThread().getName()+"]"+"线程处理成功";
  9. }
  10.  
  11. public WorkForCallable(String mobile){
  12. this.mobile=mobile;
  13. }
  14. public WorkForCallable(){
  15. }
  16. }

测试:

  1. @Test
  2. public void testExecutors1() throws InterruptedException, ExecutionException {
  3. List<String> mobList=new ArrayList<>();
  4. for(int i=10;i<100;i++){
  5. String tel="186544444"+i;
  6. mobList.add(tel);
  7. }
  8. List<FutureTask<String>> futureTaskList = new ArrayList<FutureTask<String>>();
  9. ExecutorService excutorService = Executors.newFixedThreadPool(10);
  10. for(int a=0;a<mobList.size();a++){
  11. String str=mobList.get(a);
  12. FutureTask<String> futureTask = new FutureTask<String>(new WorkForCallable(str));
  13. // futureTaskList.add(futureTask);
  14. excutorService.submit(futureTask);
  15. String s = futureTask.get();
  16. System.out.println("************完成结果"+s+"手机号:"+str);
  17. }
  18. }

学习链接

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. 【原创】大叔问题定位分享(9)oozie提交spark任务报 java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/KafkaProducer

    oozie中支持很多的action类型,比如spark.hive,对应的标签为: <spark xmlns="uri:oozie:spark-action:0.1"> ...

  2. shell入门(二):()、(())、[]、[[]]、{}

    1.() 命令组. 括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号’;’隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ...

  3. mysql的配置说明

    查询最高内存占用 使用以下命令可以知道mysql的配置使用多少 RAM SELECT ( @@key_buffer_size + @@query_cache_size + @@innodb_buffe ...

  4. OpenSSL 提取 pfx 数字证书公钥与私钥

    由于之前生产环境已经使用了 Identityserver4 用来做授权与认证的服务,而新项目采用 Spring Cloud 微服务体系,一方面 Spring Cloud 官方暂时只支持 OAuth2. ...

  5. Ubuntu系统查看显卡型号和NVIDIA驱动版本

    查看GPU型号 lspci | grep -i nvidia 查看NVIDIA驱动版本 sudo dpkg --list | grep nvidia-*

  6. scrapy 通过FormRequest模拟登录再继续

    1.参考 https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests 自动提交 ...

  7. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  8. 命令行神器 Click 简明笔记

    Click 是用 Python 写的一个第三方模块,用于快速创建命令行.我们知道,Python 内置了一个 Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click 相比于 Argpa ...

  9. 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...

  10. ExpandableListView

    ExpandableListView 1.界面 Item_Group_layout 就一个TextView <?xml version="1.0" encoding=&quo ...