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

做网站收入怎样开放平台登录

做网站收入怎样,开放平台登录,网站建设与推广员岗位职责,网站建设会议记录大家好#xff0c;我是伍六七。 今天阿七来聊聊 Java 程序员们面试、工作中经常会碰到的线程池。它的概念、原理、使用以及可能会碰到的一个坑。 一、Java 线程池基本概念 1、线程池的 7 个核心参数 这是 Java 初中级程序员们面试必问的面试题了#xff0c;我们来看…大家好我是伍六七。 今天阿七来聊聊 Java 程序员们面试、工作中经常会碰到的线程池。它的概念、原理、使用以及可能会碰到的一个坑。 一、Java 线程池基本概念 1、线程池的 7 个核心参数 这是 Java 初中级程序员们面试必问的面试题了我们来看 corePoolSize核心线程数 corePoolSize 是线程池中保持活动状态的最小线程数。 即使线程是空闲的它们也会一直保持在池中。 当有新任务提交时线程池会优先创建核心线程来处理任务。 maximumPoolSize最大线程数 maximumPoolSize 是线程池中允许的最大线程数。 如果任务数超过了核心线程数且任务队列已满线程池会创建新的线程但不会超过最大线程数。 keepAliveTime线程空闲时间 keepAliveTime 是非核心线程在空闲时可以存活的时间。 当线程空闲时间超过 keepAliveTime多余的非核心线程将被终止以减少资源消耗。 这个参数配合 TimeUnit 来定义时间单位。 unit时间单位 unit 是与 keepAliveTime 一起使用的时间单位。 它表示 keepAliveTime 的时间单位可以是秒、毫秒、微秒等。 workQueue任务队列 workQueue 是一个阻塞队列用于存储等待执行的任务。 当任务数超过核心线程数时多余的任务会被放入任务队列中。 常见的队列类型包括 LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue 等。 threadFactory线程工厂 threadFactory 用于创建新线程。 可以通过自定义线程工厂来配置线程的名称、优先级、是否为守护线程等属性。 handler饱和策略 handler 是当工作队列和线程池都满了之后采取的饱和策略。 常见的饱和策略有 AbortPolicy默认抛出异常、CallerRunsPolicy由调用线程执行任务等。 这些参数在创建线程池时进行配置通过合理调整这些参数可以使线程池适应不同的工作负载和性能需求。例如通过调整核心线程数和最大线程数可以优化线程池在不同负载下的性能表现。 2、线程池是怎么运转的 举例来说核心线程数量为 5 个全部线程数量为 10 个工作队列的长度为 5。 刚开始都是在创建新的线程达到核心线程数量 5 个后新的任务进来后不再创建新的线程而是将任务加入工作队列 任务队列到达上线 5 个后新的任务又会创建新的普通线程直到达到线程池最大的线程数量 10 个 后面的任务则根据配置的饱和策略来处理。如果没有配置使用的是默认的配置 AbortPolicy:直接抛出异常。 当当前任务小于最大线程数的时候线程资源会保持核心线程池个数的线程其他超过的线程资源在存活时间时间之后会被回收。 二、Future 关键字 我们在项目中会经常使用 CompletableFuture 执行异步任务。那你知道 CompletableFuture 使用的是什么线程池吗这个线程池适合执行什么类型的任务呢 之前阿七刚转到互联网的时候就因为使用 CompletableFuture 不当被领导 diss 了。 我们看看源码 // 是否使用 useCommonPool如果cpu 的核数 -1大于 1使用 ForkJoinPool否则不使用线程池。private static final boolean useCommonPool (ForkJoinPool.getCommonPoolParallelism() 1); /*** Default executor -- ForkJoinPool.commonPool() unless it cannot* support parallelism.*/// 使用线程池还是创建普通线程private static final Executor asyncPool useCommonPool ForkJoinPool.commonPool() : new ThreadPerTaskExecutor(); /** Fallback if ForkJoinPool.commonPool() cannot support parallelism */static final class ThreadPerTaskExecutor implements Executor {public void execute(Runnable r) { new Thread(r).start(); }}我们看到默认情况下 CompletableFuture 会使用公共的 ForkJoinPool 线程池这个线程池默认创建的线程数是 CPU 的核数 PS也可以通过 JVM option:-Djava.util.concurrent.ForkJoinPool.common.parallelism 来设置 ForkJoinPool 线程池的线程数。 但是也不一定就使用 ForkJoinPool要看cpu 的核数 -1是否大于 1如果大于 1使用过 ForkJoinPool否则创建普通线程执行。 cpu 核数 Runtime.getRuntime().availableProcessors();我们要知道 CompletableFuture 获取返回是阻塞的那我们在执行 IO 操作的时候如果我们直接使用默认的线程池有很大概率是会阻塞其他操作的。 所以我们使用 CompletableFuture 的时候如果执行 CPU 操作可以使用默认线程池。 但是如果执行的是 IO 操作比如 DB 增删改查、接口调用等尽量使用自定义线程池。 三、自定义线程池 有些情况我们需要做到资源隔离比如上面使用 进行 IO 操作我们需要自定义线程池那我们怎么定义呢 3.1 ThreadPoolExecutor 我们可以使用 ThreadPoolExecutor指定核心参数进行线程吹创建。 ThreadPoolExecutor cutomerPoolExecutor new ThreadPoolExecutor(10,10,1,TimeUnit.DAYS,new ArrayBlockingQueue(1000),new NamedThreadFactory(business-operation-));创建好之后我们就可以往里面放任务了我们来看个例子 首先创建一个任务 // 测试任务sleep 1s模拟执行耗时任务 public class TestTask implements Runnable { Overridepublic void run() {try {Thread.sleep(1000L);} catch (InterruptedException e) {throw new RuntimeException(e);}} }把任务放到线程池中直接 submit 即可。 personalPoolExecutor.submit(new TestTask());3.2 怎么设置线程池的参数 线程池究竟设成多大是要看你给线程池处理什么样的任务任务类型不同线程池大小的设置方式也是不同的。 任务一般可分为CPU 密集型、IO 密集型、混合型对于不同类型的任务需要分配不同大小的线程池。 CPU 密集型任务 尽量使用较小的线程池一般为 CPU 核心数 1。 因为 CPU 密集型任务使得 CPU 使用率很高若开过多的线程数只能增加上下文切换的次数因此会带来额外的开销。 IO 密集型任务 可以使用稍大的线程池一般为 2*CPU 核心数。 IO 密集型任务 CPU 使用率并不高因此可以让 CPU 在等待 IO 的时候去处理别的任务充分利用 CPU 时间。 混合型任务 最佳线程数 CPU 核数 * [ 1 I/O 耗时 / CPU 耗时] 可以将任务分成 IO 密集型和 CPU 密集型任务然后分别用不同的线程池去处理。 只要分完之后两个任务的执行时间相差不大那么就会比串行执行来的高效。 因为如果划分之后两个任务执行时间相差甚远那么先执行完的任务就要等后执行完的任务最终的时间仍然取决于后执行完的任务而且还要加上任务拆分与合并的开销得不偿失。 你学会了嘛学会了点个赞再走 关注我送你全套我整理的 Java 岗位面试资料。这是我自己之前整理的面试题靠着这份面试题我从 30 人的小公司进了 2000 人的央企子公司之后又进了互联网大厂。 一份让我进大厂央企的面试题
http://www.pierceye.com/news/324222/

相关文章:

  • 外贸网站运营推广微信运营商
  • 国外做储物柜的网站做亚马逊网站一般发什么快递
  • 仿古建筑公司网站廊坊网站建设公司
  • 在线动画手机网站模板下载学软件开发需要什么基础
  • 北京的网站建设收费标准推广产品的方法和步骤
  • 北京市专业网站制作企业合肥做网络推广的公司
  • 网站建设php教程视频手机商城网站设计
  • 重庆网站建设公司哪个最好老家装设计网
  • 外贸网站建设产品crm公司
  • 网站做查赚钱网站建设捌金手指花总四
  • 有没有做链接的网站彩票型网站建设
  • 15年做哪个网站能致富网站界面设计的相关指南
  • 网站报价功能清单德州做网站最好的公司
  • 网站开发设计图片搭建论坛需要多少钱
  • 网站建设价格明细做一套二级域名网站怎么做
  • 网站建设 发展方向手机开发人员选项怎么打开
  • 深圳网站建设深圳网络邢台市政建设集团股份有限公司网站
  • 广东网站开发搭建旅游网站开发内容
  • 恭城网站建设中象做网站怎么样
  • 泰兴网站建设开发门户网站内容建设岗位职责
  • 单页网站有后台搜索引擎优化工具有哪些
  • 视频网站弹幕怎么做中小企业网站优化
  • 南充网站建设江宁外贸网站建设
  • 从事网站开发需要的证书泰安百度推广代理
  • 找工作哪个网站好2022查询网站备案显示划横线
  • 06627网页制作和网站建设如何制作自己的公司内部网站
  • 网站营销与推广方案百度大数据分析
  • 手机怎么做自己的网站做网站的公司广州
  • asp.net网站开发案例教程南京seo排名
  • 购物网站开发技术分销