美文网首页
Executor与线程池_ExecutorService与Com

Executor与线程池_ExecutorService与Com

作者: tgw_wzu | 来源:发表于2017-06-05 09:47 被阅读0次
    创建的是缓存线程池

    使用线程池的好处

    1.降低资源消耗(复用线程) 2.提高响应速度(不需要创建线程) 3.提高线程的可管理性

    线程池的几个参数

    1.corePoolSize(核心线程池基本大小) 2.maxmumPoolSize(线程池最大线程数)

    3.keepAliveTime(线程活动保持时间),4.TimeUnit(线程活动保持时间的单位,day-nanos)

    5.runnableTaskQueue(工作队列) ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue,PriorityBlockingQueue

    6.RejectedExecutionHandler(饱和策咯)

    AbortPolicy直接抛出异常,CallerRunsPolicy只用调用者所在线程来运行任务,DiscardOldestPolicy丢弃队列里最近的一个任务,执行当前任务;DiscardPolicy不处理,丢弃

    固定线程池,0L,则任务完成后立刻删除,那么仍然需要创建线程,则怎么复用? 还是先判断任务队列没job再丢弃?

    线程池流程

    配置线程池大小: 可通过Runtime.getRuntime().availableProcessors()获得当前CPU数

    1.CPU密集型--N(cpu)+1;2.IO密集型--2*N(cpu)

    使用线程池不仅可以提高应用的响应时间,还可以避免"java.lang.OutOfMemoryError: unable to create new native thread"之类的错误。

    建议设置为有界队列

    StackOverflowError是由于当前线程的栈满了 那么二者有什么区别?

    线程池监控

    taskCount:线程池需要执行的任务数量

    completedTaskCount:线程池在运行过程中已完成的任务数量

    largestPoolSize:线程池曾创建过的最大线程数量

    getPoolSize:线程池的线程数量

    getActiveCount:活动的线程数

    Executor

    Executor, ExecutorService 和 Executors 间的不同

    相关文章

      网友评论

          本文标题:Executor与线程池_ExecutorService与Com

          本文链接:https://www.haomeiwen.com/subject/tgsufxtx.html