匿名模糊定位:都柏林

无追已将您的地理位置进行模糊化处理,谨防第三方窃取您的位置信息。

综合

影视

购物

  • Java 线程池 在面来自向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在 Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这就是”池化技曾这江技资源”技术产生的原因。线程池顾名思义就是先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销无追搜索毁线程而是放回池中,从而减少创建和销毁线程对象的开销。 利用 Excutors创建不同的线程池满足不同场景的需求(五种线程池创建配置) newSgleThreadExecutor:创建一个单线程的线程池。这个线程池只有一个线程, 也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个 新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。 newFixedThreadPool:创建固定大小的线程池。每次提一个任务就创建一个线程,直 到线程达到线程池的最大大小。线程池的大小一旦达到最大值就为革保另孩怀解转会保持不变,如果上投田护客项验离安某个线程 因为执行异常而结束,那么线程池会孙滑胞认句职厂补充一个新线程。 newCache条占但径最dThreadPool:创建一个可缓存的线程池。如果线程李试本香放找池的大小超过了处理任务 所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此 线程池又可以智能的添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大 小完全依赖于操作系统(或者继顺足范居找固斤茶说 JVM)能够创建的最大线程小。 newScheduledThre异互形皮世安木毫国增adPool:创建一个大小无限的线程池。此线程池支持定时以及周期性 执行任务的需求。 newSileThreadExecutor:创最南铁增香建一个单线程的线程池。此池支持定时以及周期性执 行任务的需求。 Fork/Join 框架java7提供的用于并行执行任务的框架) Fork/in是 ExecutorService接口的一种具体实现,是为了帮助你更好地利用多处理器带来的好处,它是为了那些能够被递归的拆解成子任务的工作类型量身设计的,其目的在于能够使用所有可用的运算能力来提升运用的性能。 Fork/Join 把这些分别放到不同的队列里,并为每个队列创建一个阶自布排作肥她于胞境司单独的线程来执行队列里的任务 为什么要使用线程池 降低资源耗(即通过重复利用已创建的线程来降低线程创建和销毁造成的消 耗) 提高线程的可管理性(线程是稀缺资源,如果无限制的创建,不仅会消耗系统 资源,还会降低系统稳定性,使用线程池也可进行统一的分配,调优和监控) Ex治含们思打ecutor 框架 是一个根据一组执行策略调用调度执行和控奏垂质员到井分制的异步任务的框架,目的是提供一种将任 务提交与任务如何运行分离开来的机制 J.U.C 的三个 Executor接口 Executor:运行新任务的简单接口,将任务训应止止板喜兵提交和任务执行细节解耦 Excutor 接口只有一个方法 void exe鸡将责翻甚百笔减史凯系cute(Ruunable command)对于不同的 Executor的实 现,exe讲算富层cute方法可能是创建一个新线程并立即启动,也可能是使用已有的工格快属线灯山已严具阶作线程来 运行传入的任务,也老胞磁齐川存乱由级粒可能是根据设置线程池的容量或者阻塞队列的容量来决定是否要将 传入的线程放入阻望头树副约兵局毛措色接塞队列中,或者拒绝接收传入的线著征析知状安境愿程 Executo门显装收吗材训例十政rService:具备管理执行器和任务生命周期的方法,提息要小纪参调船光多它硫交任务机制更完善 (着困的容即submit 方法,传入 Callable接口) ScheduledExecutorService:(扩展了 ExecutorService,同时,)支持 Future和定期执 行任务 ThreadPoolExector 描述的是应用从提交任务到线程处去处理,再到线程池内部如何处理任务,再到处理完成返 回数据给应用的流程,线程池会有一个工作队列来接客,即存储用户提交的各个任务,队列 接到任务后,就会排队将任务交给内部的线程池,即工作线程的集合,该集合需要在运行的 过程中管理线程的创建和销毁,例如 newCacheThreadPool,当任务压力较大的时候,线程池 会创升可跳赵担七建新的工作线程,当任务量变小的时候,线程池会闲置一段时间后结束线程,线程池的 工作线程被抽象为静态内部类 orkerThreadPool维护的其实就是一组 Wor哪交罗局苦回初律陆希ker对象 Thread伯数部经Factory 提供线程池所需的创建线程的逻辑,如果任务提交被拒绝,比如线程池已经处婷史毫操纪限免报吸于 shutdown的状态,此时先来的任务需要有处理机制来处理,java标准库中就提供了 ThreadPoolExecut胜结or.AbortPolicy的默认实现供我用之外,还可以按照实际情况扩展自定义相关的处理机制,也就是实现 RejectExecutionHandler这个接口 ThreadPoolExecutor 构造函数 corePoolSize: 完功乐养失施核心线程数量:(可以大致的理解为长期留的线程数,对于不同的线 程池,这个值可能会有很里握角论大的区别,核心池的大小,这个参数跟后面讲述的线程池的实现原 理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待 有到来才创建线程去执行任务 ,除非调用了 prestartAllCoreThreads()或者 prestartCoreThread()方法,从这 2个方法的名字就可以看出,是预创建线程的意思,即在没 有任务到来之前就创建 corePoolSize个线程或者一个线程。默认情真清双农雨况下,在创建了线程池后, 线程池中的线程数为 0,当有任务来之后,就会创建一个线程去执行任线程池中的线 程数目达到 core晶众异方很怀步PoolSize后,厚举含就会把到达的任务放到缓府水的啊书你服存队列当中;) maximumPoolSize: 线用时能够创建的最大线程数 unit:参数 keepA充研首年六测矛维找liveTime的时间单位,有 7种取值,在 TimeUnit类中有 7种静态属性 workQueue: 任务等待队列(当任务提交时,如果线程池中的线程数量大于或者等于 corePoolSize 时,把该任务封装成一个 worker肥节范慢对象,放入到等待队列免态冷把越中,由于存在许多种类 的队列。而使用不同的队列就会有不同的排队机制) keepAliveTime: 抢占的顺序不一定,看运气(线程池维护线程所允许的空闲时间,当 线程池中的线程数量大于 corePoolSize的时候,如果这时没有新的任务提交,核块立族色扬达心线程外的 线程不会立即被销毁而是会等待,直到等待的时间超过 keepAliveTime,则会终止,直到线 程池中的线程数不超过 corePoolSize,但是如了 allowCoreThreadTimeOut(boolean)方 题歌宜区病述四蛋办法,在线程池中的线程数不大于 corePoolSize时合做,keepAliveTime参数也会起作到线程 池中的线程数为 0) ThreadFactory: 创建新线程,默认使用 Executors.defaultThreadFactory()来创建线程, 使用默认的 Thre言重粉吃互片后率孩垂可adFactory来创建线程时,会使新创建的线程具有相同的 术川明血部训下白priority即优先运香似七级, 并且是非守护线道零攻制程,同时也设置了线程的名称 Handler: 线程池的饱和策略(如果阻塞队列满了,且没有空闲的线程,这时如果继续 提交任务,就需要采取一种策略处理该任务) 线程池提供了四种策略:
    1. AbortPolicy:直接抛出异常,这时默认策略
    2. CallerRunsPolicy:用调用者所在的线程来执行任务
    3. DiscardOldestPolicy:丢弃阻塞队列中靠最前的任务,并执行当前任务
    当编写程序时,如果我们的线程创建的过多,就容易引发内存溢出,因此我们就有必要使用线程池的技术了。在Java中,线程池是一种用于管理和复用线程的机制。使用线程池可以避免频繁创建和销毁线程带来的开销,提高程序的性能和资源利用率。详情 >
    服务端项目,经常需要处理执行时间很短而数目巨大的请求,如果为每一个请求创建一个新的线程,则会导致性能上的瓶颈。线程池核心原理是对线程对象进行管理,包括创建与销毁。图线程池相关UML图。详情 >
    查看更多精选
  • Java 线程池全面解析_线程池类所在的包-CSDN博客

    1条评论  104个收藏  发表时间:2024年1月5日

    通过维护一定数量的线程池来达到多个线程的复用。2.线程池的好处我们知道不用线程池的话,每个线程都要通过new Thread(xxRunnable).start(..._...

    blog.csdn.net/weixin_36759405/ar...

  • 安装无追扩展,智能升级未加密网站

    日升级未加密网站超10w次
    保护您的个人信息不被盗取

    添加扩展到浏览器
    添加后不再显示
  • Java并发编程:线程池的使用- Matrix海子- 博客园

    发表时间:2014年9月3日 - 

    Java并发编程:线程池的使用 Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会...

    www.cnblogs.com/dolphin0520/p/3932921....

  • Java 中几种常用的线程池_线程池常用类-CSDN博客

    并以runnable作为target创建Thread在Android中的耗时任务一般都需要另开线程来执行,常常需要用线程池来管理这些线程,实现控制线程数,重用,控制执行和取消等功能。Java线...

    blog.csdn.net/wbwjx/arti...

  • Java四种线程池的示例_java线程池使用实例-CSDN博客

    34个收藏  发表时间:2024年4月4日

    Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵...

    blog.csdn.net/qq_314416...

  • java中的线程池有哪些,分别有什么作用?_java线程池有几种-CSDN...

    14条评论  240个收藏  发表时间:2023年2月5日

    进程是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配的调度的基本单位,是操作系统结构的基础。简单来讲:进程是指运行中的...

    blog.csdn.net/qq_33453910/articl...

  • 深入理解Java线程池原理分析与使用(尤其当线程队列满了之后事项)-...

    线程数大于等于corePoolSize),几乎所有的execute()方法调用都是执行步骤2,而步骤2不需要获取全局锁。 线程池只是并发编程中的一小部分,下图是史上最全面的Java的并发编...

    blog.csdn.net/u01096394...

  • Java中的线程池(3)----SingleThreadExecutor_java ...

    5条评论  8个收藏  发表时间:2024年3月20日

    也是当线程运行时抛出异常的时候会有新的线程加入线程池替他完成接下来的任务。 以上为自己的一些认识如果有错误请指...

    blog.csdn.net/qq_355808...

  • Java线程池详解- CarpenterLee - 博客园

    发表时间:2018年8月30日 - 

    Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThreads),但是便捷不仅隐藏了复杂...

    www.cnblogs.com/CarpenterLee/p/955802...

  • java四种线程池的使用- zincredible - 博客园

    发表时间:2019年6月6日 - 

    newSingleThreadExecutor 创建一个单线程的线程池,它只会用唯一的工作线程来执行... 即最大可添加Integer.MAX_VALUE个任务,这也就是阿里巴...

    www.cnblogs.com/zincredible/p/10984459....

无追为您找到约636,000条相关结果
12345678910下一页

无追已累计保护
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
次匿名搜索

22秒前更新换一换

尝试下载 360极速浏览器X,给隐私保护加码