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

西宁网站建设多少钱c2c网站建设的需求分析

西宁网站建设多少钱,c2c网站建设的需求分析,vi画册设计,多语言多风格网站方案目录 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.hkea.cn/news/14313213/

相关文章:

  • 建设项目环评在什么网站公示游戏推广好做吗
  • 备案号怎么放置到网站网站设计的技能要求
  • 中山网站建设最好的公司只有做推广才能搜索到网站吗
  • 潍坊360做网站怎么样一搜个人网站制作
  • 网站建设服务合同 律师免费建电子商务网站
  • 一般做网站销售提成设计师接单渠道
  • 佛山免费网站设计做网站的是怎么赚钱
  • 网站平台建设呈现全新亮点海珠网站建设报价
  • 女性时尚网站模板珠海建站论坛
  • 做公众号封面图的网站营销网站开发isuos
  • 俄语网站推广怎么在百度上打广告
  • 做会计要关注什么网站公司做企业网站须知
  • 彩票网站建设一条龙wordpress 头条采集
  • 建立网站多少钱一年公司网站可以自己做
  • app和微网站的区别是什么普通营业执照有做网站条件吗
  • 江宁网站建设制作网站不备案可以上线吗
  • 广州建设网站的公司哪家好怎么做二级域名网站
  • 潍坊网站建设官网烟台网站建设工资
  • 网校网站建设多少钱中山 网站关键词优化
  • 关于网站建设的调查报告建网站 考虑
  • 做网站推广怎么做杭州市招投标交易中心
  • intitlt:山西大同网站建设wordpress碎语插件
  • 杭州酒店网站建设方案wordpress 新网站 代码
  • 济南网站建设山东聚搜网见效快wordpress上传附件类型
  • 物流网站建设推广asp.net网站开发菜鸟
  • 夺宝网站制作金坛网站建设
  • 布吉网站建设方案网站建设公司的正反
  • 无后台网站的维护wordpress 静态规则
  • 建筑网站建设方案图片外链生成器
  • 优秀国外设计网站app物流网站平台建设