在单个线程的时候我们可以单个的去开启一个线程

但是在遇到多并发和你并不知道会开启几个线程的时候这样开启线程会造成线程无法控制的情况

这个时候需要使用线程池去管理你的线程

首先感谢作者 Sunzxyong 的博客,侵删

线程池的种类

官方给出的线程池有5种

   1 newFixedThreadPool(int nThreads ) :这个方法返回一个固定数量的线程池,线程池中的核心线程数不变

   2、newCachedThreadPool() :这个方法返回一个根据实际情况调整的线程池,即核心线程数量不固定,根据具体情况自动调整

       3 newSingleThreadExecutor()  :只有一个核心线程的线程池,其任务按照FIFO(First in first out 先进先出的规则)执行

       4 newScheduledThreadPool() : 可控制线程定时和周期性执行的线程池

   5 newSingleThreadScheduledExecutor() : 周期性执行线程的核心线程只有一的线程池,而4 可以指定线程数量

线程池的使用

通过Executors的工厂方法来获取:

        //初始化线程最大数量为3的线程池fixedThreadPool = Executors.newFixedThreadPool(3);

如上是初始化一个核心线程为3的线程池

加入线程

fixedThreadPool.execute(new Runnable){@Overridepublic void run(){//你的耗时任务
  }
}    

那么有什么好处呢

1.减少在创建和销毁线程上所花的时间以及系统资源的开销 
    2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。

当然线程池也可以提供自己定制的使用方法,官方给了很多定制的方法,这里就不做赘诉,以后有机会再写

转载于:https://www.cnblogs.com/fengfenghuifei/p/6898284.html

使用线程池管理线程!相关推荐

  1. 【转】1.2异步编程:使用线程池管理线程

    从此图中我们会发现 .NET 与C# 的每个版本发布都是有一个"主题".即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程.现在我为 ...

  2. 异步编程:使用线程池管理线程

    开始<异步编程:使用线程池管理线程> 示例程序:异步编程:使用线程池管理线程.rar 如今的应用程序越来越复杂,我们常常需要使用<异步编程:线程概述及使用>中提到的多线程技术来 ...

  3. JAVA线程池管理及分布式HADOOP调度框架搭建

    平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头.怎么做一套简便的线程开发模式 ...

  4. Android多线程操作——线程池管理综述

    1 前言 android开发,大家最熟悉的肯定是主线程,也就是ui线程,也都知道在非ui线程更新界面会报错提示不允许在子线程更新ui.但是耗时操作还是需要使用子线程,如: new Thread(new ...

  5. springboot如何使用多线程,线程池管理

    在原生java中,创建和启动线程的方式大致有以下几种: 继承Thread类,然后重写run方法 实现Runnable接口,并重写run方法 匿名内部类 Thread thread = new Thre ...

  6. Python 多线程总结(2)— 线程锁、线程池、线程数量、互斥锁、死锁、线程同步

    主要介绍使用 threading 模块创建线程的 3 种方式,分别为: 创建 Thread 实例函数 创建 Thread 实例可调用的类对象 使用 Thread 派生子类的方式 多线程是提高效率的一种 ...

  7. ReentrantLock+线程池+同步+线程锁

    1.并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行. 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量 ...

  8. 【Android 异步操作】线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTask 使用线程池示例 )

    文章目录 一.线程池简介 二.线程池初始化方法简介 三.线程池使用示例 一.线程池简介 线程池一般是实现了 ExecutorService 接口的类 , 一般使用 ThreadPoolExecutor ...

  9. 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )

    文章目录 一.线程池作用 二.线程池种类 三.线程池工作机制 四.线程池任务调度源码解析 一.线程池作用 线程池作用 : ① 避免创建线程 : 避免每次使用线程时 , 都需要 创建线程对象 ; ② 统 ...

  10. 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等

    Executor 接口关系 Callable:类似于Runnable,但是可以有返回值 Future:存储将来执行的结果.Callable被执行完之后的结果,被封装到Future里面. Future ...

最新文章

  1. RTX软件用友OA冲突解决
  2. 北京黄记煌餐饮管理有限责任公司签约Ebistrategy亦策软件
  3. 跟我一起了解less(3):判断和循环
  4. 2020秋 英文科技论文写作与学术报告-期末
  5. 视频直播产业的下半场,谁会走谁会留?
  6. vmware虚拟机网络设置方法(轻松版)
  7. 解决No instances available for XXX
  8. 读应届生论坛的“职业生涯步步高:一位资深经理人的职业生涯感悟”之一
  9. linux连不上网问题总结
  10. java整型数组转置输出,Java实现数组转置
  11. crawler(2)
  12. 吉林大学考研计算机系分数线,吉林大学考研计算机分数线相关交流问答贴 小木虫论坛-学术科研互动平台...
  13. C#合并两个(多个)集合
  14. springboot停车场车辆定位管理可视化分析系统的设计与实现毕业设计源码101702
  15. 真假博士后事件 万万没想到这些明星是学霸
  16. TIKTOK直播网络怎么选?海外服务器卡顿不稳定怎么办?
  17. qt网络编程之使用cookie和ssl
  18. 一键安装5个系统方法,简单易学轻松上手
  19. CE实战:植物大战僵尸修改阳光并制作辅助(小试牛刀)
  20. 使用ArcGIS统计栅格数据面积

热门文章

  1. sql server concat()函数
  2. iOS 解决导航栏左右 BarButtonItem偏移位置的问题
  3. JAVA笔记整理(五),JAVA中的继承
  4. 修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(三)...
  5. oracle Ebs database clone (no apps clone)
  6. 判断对象是否是某个类的实例
  7. LeetCode题解——Reverse Integer
  8. POJ 1155 TELE 树形DP
  9. SQL函数字符串分拆
  10. 从技术到求职,强烈推荐一下这9个牛逼的公众号