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

怎样建设自己的网站的视频苏州公司建站

怎样建设自己的网站的视频,苏州公司建站,网站开发众包平台,wordpress账号是什么前言#xff1a;默认线程池的弊端在线程池应用中#xff0c;参考阿里巴巴java开发规范#xff1a;线程池不允许使用Executors去创建#xff0c;不允许使用系统默认的线程池#xff0c;推荐通过ThreadPoolExecutor的方式#xff0c;这样的处理方式让开发的工程师更加明确默认线程池的弊端在线程池应用中参考阿里巴巴java开发规范线程池不允许使用Executors去创建不允许使用系统默认的线程池推荐通过ThreadPoolExecutor的方式这样的处理方式让开发的工程师更加明确线程池的运行规则规避资源耗尽的风险。Executors各个方法的弊端newFixedThreadPool和newSingleThreadExecutor主要问题是堆积的请求处理队列可能会耗费非常大的内存甚至OOM。newCachedThreadPool和newScheduledThreadPool主要问题是线程数最大数是Integer.MAX_VALUE可能会创建数量非常多的线程甚至OOM。线程池中提交线程的方法一种是execute()另外一种是submit()12种方法接收的参数不同2submit()有返回值execute()没有3submit()方法便于Exception处理4execute()提交不需要返回值的任务无法判断任务是否被执行成功了5submit()提交需要放回值的任务线程会返回Future对象通过Future的isDone()方法可以判断任务是否执行成功并且可以通过Future.get()获取返回的值get方法会阻塞直到线程的完成而get(long timeout, TimeUnit unit)会在等待一段时间后返回这段时间内任务可能没有执行完成线程池的创建可以分为以下两类1通过 ThreadPoolExecutor 手动创建线程池2通过 Executors 执行器自动创建线程池1FixedThreadPool创建一个固定大小的线程池可控制并发线程数。使用 FixedThreadPool 创建 2 个固定大小的线程池public static void fixedThreadPool() {// 创建 2 个线程的线程池ExecutorService threadPool Executors.newFixedThreadPool(2);// 创建任务Runnable runnable new Runnable() {Overridepublic void run() {System.out.println(任务被执行,线程: Thread.currentThread().getName());}};threadPool.execute(runnable); threadPool.execute(runnable); threadPool.execute(runnable);threadPool.execute(runnable); }//如果觉得以上方法比较繁琐还用使用以下简单的方式来实现线程池的创建和使用 public static void fixedThreadPool() {// 创建线程池ExecutorService threadPool Executors.newFixedThreadPool(2);// 执行任务threadPool.execute(() - {System.out.println(任务被执行,线程: Thread.currentThread().getName());}); } 2CachedThreadPool创建一个可缓存的线程池若线程数超过任务所需那么多余的线程会被缓存一段时间后才被回收若线程数不够则会新建线程。有多少任务就动态创建多少线程线程数最大数是Integer.MAX_VALUE可能会创建数量非常多的线程甚至OOM。CachedThreadPool 是根据短时间的任务量来决定创建的线程数量的所以它适合短时间内有突发大量任务的处理场景public static void cachedThreadPool() {// 创建线程池ExecutorService threadPool Executors.newCachedThreadPool();// 执行任务for (int i 0; i 10; i) {threadPool.execute(() - {System.out.println(执行任务,线程: Thread.currentThread().getName());try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {}});} } 3SingleThreadExecutor创建单个线程的线程池它可以保证线程先进先出的执行顺序单个线程的线程池相比于线程来说它的优点有以下 2 个1可以复用线程即使是单个线程池也可以复用线程。2提供了任务管理功能单个线程池也拥有任务队列在任务队列可以存储多个任务这是线程无法实现的并且当任务队列满了之后可以执行拒绝策略这些都是线程不具备的。public static void singleThreadExecutor() {// 创建线程池ExecutorService threadPool Executors.newSingleThreadExecutor();// 执行任务for (int i 0; i 10; i) {final int index i;threadPool.execute(() - {System.out.println(index :任务被执行);try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {}});} } 4ScheduledThreadPool创建一个可以执行延迟任务的线程池执行结果是任务在 2 秒之后被执行了实现了延迟 1s 再执行任务public static void scheduledThreadPool() {// 创建线程池ScheduledExecutorService threadPool Executors.newScheduledThreadPool(5);// 添加定时执行任务(2s 后执行)System.out.println(添加任务,时间: new Date());threadPool.schedule(() - {System.out.println(任务被执行,时间: new Date());try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {}}, 2, TimeUnit.SECONDS); }5ThreadPoolExecutorThreadPoolExecutor 是最原始、也是最推荐的手动创建线程池的方式它在创建时最多提供 7 个参数可供设置public static void myThreadPoolExecutor() {// 创建线程池ThreadPoolExecutor threadPool new ThreadPoolExecutor(5, //corePoolSize 核心线程数10, //MaxPS 最大线程数100, //keepAliveTime 存活时间TimeUnit.SECONDS, //TimeUnit 时间单位new LinkedBlockingQueue(10),//BlockingQueue 任务队列Executors.defaultThreadFactory(),//ThreadFactory 线程工厂new ThreadPoolExecutor.DiscardPolicy());//RejectStrategy 拒绝策略// 执行任务 } corePoolSize线程池核心线程数平时保留的线程数 maximumPoolSize线程池最大线程数当workQueue都放不下时启动新线程最大线程数 keepAliveTime超出corePoolSize数量的线程的保留时间。 unitkeepAliveTime单位 workQueue阻塞队列存放来不及执行的线程 ArrayBlockingQueue构造函数一定要传大小 LinkedBlockingQueue构造函数不传大小会默认为Integer.MAX_VALUE 当大量请求任务时容易造成 内存耗尽。 SynchronousQueue同步队列一个没有存储空间的阻塞队列 将任务同步交付给工作线程。 PriorityBlockingQueue : 优先队列 threadFactory线程工厂 handler饱和策略,当工作队列中的任务已到达最大限制并且线程池中的线程数量也达到最大限制这时如果有新任务提交进来该如何处理呢。这里的拒绝策略就是解决这个问题的jdk中提供了4中拒绝策略 AbortPolicy默认该策略下直接丢弃任务并抛出RejectedExecutionException异常 CallerRunsPolicy用调用者的线程执行任务该策略下在调用者线程中直接执行被拒绝任务的run方法除非线程池已经shutdown则直接抛弃任务 DiscardOldestPolicy该策略下抛弃进入队列最早的那个任务然后尝试把这次拒绝的任务放入队列 DiscardPolicy该策略下直接丢弃任务什么都不做
http://www.hkea.cn/news/14259910/

相关文章:

  • pageadmin做网站大数据营销的弊端
  • 建设一个网站需要什么设备网站建设和执纪监督
  • 备案 网站名称怎样在百度上注册自己的店铺
  • 电子商务网站建设需求个人名义做网站能备案吗
  • 建设银行网站信息补充WordPress文章批量生成器
  • 淘宝购物返利网站建设app旅游网站开发的目的
  • 手机网站的尺寸做多大的广州达美网站建设
  • 社区网站建设申请报告seo建站网络公司
  • 肉部网站建设包括哪些郑州网站建设公司排行
  • 网站怎么做区域性优化曲靖网站建设公司靖网站建设
  • 墨尔本网站建设示范校建设验收网站
  • seo站点是什么意思做短视频网站好
  • 如何制作app软件演示教程seo优化交流
  • 一个做智能化的网站有哪些网上服务办事大厅
  • 网站设计便宜通用网址通用网站查询
  • 网上拿货做哪个网站好办公室装修报价表
  • 自定义wordpress首页标题seo如何网站正常更新
  • 做嫒嫒网站竞价推广平台
  • 微网站难做么上海网站的优化公司
  • 网站查看动漫制作专业研究生考啥
  • 淘客怎样做网站上海全网营销推广
  • 制作网站收费在线视频下载网站如何做
  • 网站备案繁琐工作旅游网站建设内容
  • 体育网站开发的目的华为手机应用引擎
  • 哪些网站适合推广tp5网站开发模板
  • php网站开发流程图免费个人业务网站制作
  • 个人公司网站搭建p2p网站建设价格
  • 天津市企业网站设计公司大屏网页设计网站
  • 用DW做的网站生成链接WORDPRESS自定义加载不出来
  • 网站建设 支持多种语言网页设计心得体会100