当前位置: 首页 > news >正文

成都网站建设服务公司全网推广服务

成都网站建设服务公司,全网推广服务,个体户网上注册,wordpress4.9漏洞目录 1、池 1.1、线程池 2、ThreadPoolExecutor 线程池类 3、Executors 工厂类 4、模拟实现线程池 1、池 “池”这个概念见到非常多#xff0c;例如常量池、数据库连接池、线程池、进程池、内存池。 所谓“池”的概念就是#xff1a;#xff08;提高效率#xff09; 1…目录 1、池 1.1、线程池 2、ThreadPoolExecutor 线程池类 3、Executors 工厂类 4、模拟实现线程池 1、池 “池”这个概念见到非常多例如常量池、数据库连接池、线程池、进程池、内存池。 所谓“池”的概念就是提高效率 1、提前把要用的对象准备好 2、用完的对象也不立即释放留着以备下次使用。从而大大降低了线程频繁地创建销毁造成的开销。 1.1、线程池 线程池也是如此提前把要使用的线程在线程池中准备好等到需要用时就从池子里取 出用完之后再归还给池子。 其中取出和归还操作都是属于纯用户态代码这就比内核操作更快更可控  上面提到了用户态什么是用户态呢 设想一个场景你在银行柜台办理业务该业务需要用到身份证复印件此时有两种选择一种是柜员拿着你的身份证帮你去复印一种是你自己去复印。 显然自己去复印这个操作更加可靠并且可控一些。如果交给柜员去复印天知道柜员拿了你的身份证后还去做了什么因为柜员本身需要处理的事情不止有帮你复印身份证这一件事可能在帮你复印身份证的路上去做了别的事情你能做的就只有在柜台前等柜员回来这种操作显然更加不可控。 你自己去操作就相当于用户态而柜员帮你操作就相当于是内核态。 而类比到计算机上简单来说就是 如果一个任务是在用户程序上完成的就属于用户态此时更加的可控。 如果一个任务是通过系统申请创建线程需要由内核来完成就属于内核态此时更加不可控。 2、ThreadPoolExecutor 线程池类 Java 在标准库中提供了 ThreadPoolExecutor 线程池类 corePoolSize核心线程数maximumPoolSize最大线程数keepAliveTime空闲时保持存活的时间针对临时线程的unit存活时间的时间单位sminmshour....workQueue阻塞队列和定时器类似线程池中也可以持有很多个任务threadFactory线程工厂这个类中的方法封装了 new Thread 的操作同时给 Thread 设置了一些属性handler拒绝策略当线程池中的阻塞队列满时继续往队列中添加任务此时线程池会执行什么样的操作就称为拒绝策略 针对拒绝策略又分为四种 1、继续添加任务直接拒绝接收并报错。【直接报错新旧任务都不干了】 2、新的任务由添加任务的线程负责执行。【谁揽的活儿谁干】 3、丢弃最旧的任务新的添加进来。 4、丢弃新来的任务。 3、Executors 工厂类 ThreadPoolExecutor 本身用起来比较复杂因此标准库还把 ThreadPoolExecutor 封装了一层提供了另一个版本。 即 Executors 工厂类通过这个类来创建出不同的线程池对象。 Executors 创建线程池的几种方式 newFixedThreadPool: 创建固定线程数的线程池newCachedThreadPool: 创建线程数目动态增长的线程池.newSingleThreadExecutor: 创建只包含单个线程的线程池.newScheduledThreadPool: 设定 延迟时间后执行命令或者定期执行命令. 是进阶版的 Timer. public class ExecutorDemo {public static void main(String[] args) {//将线程数设置为 10ExecutorService service Executors.newFixedThreadPool(10);//使用 submit 方法向线程池中提交任务service.submit(new Runnable() {Overridepublic void run() {System.out.println(hello Executors);}});} } 既然 ThreadPoolExecutor 和 Executors 都可以创建线程池那么到底该用哪个呢 正常情况下直接使用 Executors 工厂类即可当 Executors 工厂类提供的方法无法满足使用时或者是想要高度定制化线程池时才去使用 ThreadPoolExecutor。 4、模拟实现线程池 这里模拟写一个固定线程数目的线程池即模拟使用 newFixedThreadPool 创建的线程池。 分析要点 1、首先需要提供构造方法方法中指定创建多少个线程 2、在构造方法中把这些线程都创建好 3、用一个阻塞队列将要执行的任务保存起来 4、提供 submit 方法用于添加新的任务到阻塞队列中 public class MyThreadPoolExecutor {// 保存线程的集合private ListThread threadList new ArrayList();// 保存任务的阻塞队列private BlockingQueueRunnable queue new ArrayBlockingQueue(1000);public MyThreadPoolExecutor(int n) { //创建n个线程for (int i 0; i n; i) {Thread t new Thread(() - {//这些线程需要做的就是不断从任务队列中取出任务并执行while (true) {try {// take 带有阻塞功能为空时自动阻塞Runnable runnable queue.take();runnable.run();} catch (InterruptedException e) {throw new RuntimeException(e);}}});//启动线程t.start();//将线程存入集合中以备后续使用threadList.add(t);}}//submit 添加新的任务到队列中public void submit(Runnable runnable) throws InterruptedException {queue.put(runnable);} } 【博主推荐】  【Java多线程】线程中几个常见的属性以及状态-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/136122127?spm1001.2014.3001.5501【Java多线程】Thread类的基本用法-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/136121421?spm1001.2014.3001.5501【Java多线程】对进程与线程的理解-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/136115808?spm1001.2014.3001.5501 如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力 如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力 如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力
http://www.dnsts.com.cn/news/5862.html

相关文章:

  • 找人制作网站 优帮云自适应自助建站网站
  • 白城学习做网站的学校WordPress实现扫码登录
  • 误入网站退不了怎么做具有口碑的柳州网站建设哪家好
  • 温州高端企业网站建设公司名字大全参考2022
  • wordpress新闻主题带商城semseo是什么意思
  • 网站定制 北京湖南好搜公司seo
  • 网站建设自我介绍wordpress 5.0.2 发布失败
  • 中国动漫影视培训网站源码做律师推广的网站有哪些
  • 上海优化网站关键词宁波网络营销推广哪家好
  • 网站美工设计详细步骤晋江文学城写作网站
  • 网站安装代码想开民宿自己怎么做介绍的网站
  • 怎么建网站做wordpress目录下
  • 网站建设书籍附光盘建筑工程公司取名
  • 制作网站公司哪里好如何做好高端品牌网站建设
  • 重庆沛宣网站建设注册网络科技公司需要多少钱
  • 吴江区经济开发区建设工程网站ui设计师是做网站吗
  • 网站兼容手机浏览器怎么做私人网站
  • 阳朔县建设规划局网站网页网站作业制作
  • 建设人才网站互联网公司注册
  • 项城做网站做房地产网站
  • 网站怎么做成小程序网站 宗旨
  • 做牛仔的时尚网站mes系统
  • wordpress和百度指数大连seo排名外包
  • 一键生成个人网站wordpress 修改数据库表
  • 小说网站开发源码网站展示效果图
  • 免费psd模板素材网站seo综合查询
  • 网站建设与维护教学计划视频制作公司排行
  • 科技公司的网站建设费入什么科目网站资源建设的步骤
  • 深圳网站建设代理商怎么样能够为一个网站做推广
  • 如何做国际网站首页电子商务系统网站建设