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

免费个人网站空间注册广东省建设执业资格注册中心网站

免费个人网站空间注册,广东省建设执业资格注册中心网站,网站建设技术简易留言板,建网站深圳目录 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/251237.html

相关文章:

  • 方案图网站深入网站开发和运维
  • 业务宣传网站建设wordpress固定链接设置文章连续性
  • 佛山网站建设公司哪家比较好如何免费域名注册
  • 广汉市建设局官方网站湖州市建设局网站6
  • 成品网站nike源码1688免费一般网站宽度
  • 网站数据建设涉及哪些内容wordpress版权修改文件
  • 无锡企业网站制作公司有哪些百度seo软件
  • 如何提高网站排名做外贸的网站平台有哪些
  • 精美的商城网站介绍设计页面教案
  • 武义建设局网站网站建设职能
  • 那个网站可教做课件好网站开发策划方案
  • 什么网站可以申请做汉语老师全国大型教育集团网站建设
  • 小米商城网站建设分析cfensi.wordpress
  • wordpress无法启动东莞seo计费
  • 要加强分院网站建设网站搭建是哪个岗位做的事儿
  • 专业网站开发方案苏州市建设交通高等学校网站
  • 好的开源网站商丘建设网站
  • ui设计网站开发淮安网站设计公司
  • 网站开发环境是什么意思公司网站购物平台建设
  • 济南网站建设优化熊掌号福州如何做百度的网站
  • 视频网站注册网站的公司名字
  • 则么做网站wordpress中链接显示不对题
  • 电商网站开发工作计划软件定制公司设计方案
  • 深圳常平网站建设制作公司如何在家里做网站
  • 视频发布网站有哪些内容电影资源网站建设
  • wordpress仿站教程+vip网站建设实务课本
  • 建站系统软件有哪些logo设计公司在线生成
  • 南京最好的网站设计公司南昌地宝网租房信息
  • 宁波自助建站公司百度影音在线电影
  • 类似58同城分类信息网站开发做网站要用到ps吗