开发者社区> 问答> 正文

请问Java程序或者JVM线程池方面如何调优。提升性能?

请问Java程序或者JVM线程池方面如何调优。提升性能?

展开
收起
我是小美女 2021-10-29 23:43:12 833 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好, Java线程池有几个重要的配置参数:

    corePoolSize:核心线程数
    maximumPoolSize:最大线程数,超过这个数量的任务会被拒绝,用户可以通过RejectedExecutionHandler接口自定义处理方式
    keepAliveTime:线程保持活动的时间
    workQueue:工作队列,存放执行的任务
    
    

    Java线程池需要传入一个Queue参数(workQueue)用来存放执行的任务,而对Queue的不同选择,线程池有完全不同的行为。

    SynchronousQueue: 一个无容量的等待队列,一个线程的insert操作必须等待另一线程的remove操作,采用这个Queue线程池将会为每个任务分配一个新线程。
    LinkedBlockingQueue :无界队列,采用该Queue,线程池将忽略 maximumPoolSize参数,仅用corePoolSize的线程处理所有的任务,未处理的任务便在LinkedBlockingQueue中排队。
    ArrayBlockingQueue: 有界队列,在有界队列和 maximumPoolSize的作用下,程序将很难被调优:更大的Queue和小的maximumPoolSize将导致CPU的低负载;小的Queue和大的池,Queue就没起动应有的作用。
    
    2021-10-29 23:51:55
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JVM的GC 立即下载
基于JVM的脚本语言开发、运用实践 立即下载
多IO线程优化版 立即下载