• 线程构造方法小结


    线程池的构造方法

    ThreadPoolExecutor
    (int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory,RejectedExecutionHandler handler)

    1.corePoolSize 表示线程池的大小
    如果调用了线程池的prestartAllCoreThreads方法,线程池会提前创建并启动所有基本线程。

    2. maximumPoolSize 线程池最大大小

    3.keepAliveTime 线程的存活时间

    4.TimeUnit 线程活动保持的时间单位

    55.workQueue 表示任务队列 用于保存等待执行的任务的阻塞队列 常见的几种队列

    a.ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按 FIFO(先进先出)原则对元素进行排序。
    b.LinkedBlockingQueue:一个基于链表结构的阻塞队列,此队列按FIFO (先进先出) 排序元素,吞吐量通常要高于ArrayBlockingQueue。静态工厂方法Executors.newFixedThreadPool()使用了这个队列
    c.SynchronousQueue:一个不存储元素的阻塞队列。每个插入操作必须等到另一个线程调用移除操作,否则插入操作一直处于阻塞状态,吞吐量通常要高于LinkedBlockingQueue,静态工厂方法Executors.newCachedThreadPool使用了这个队列。
    d.PriorityBlockingQueue:一个具有优先级的无限阻塞队列。

    6.ThreadFactory 工厂,用于设置创建线程的工厂。

    7.RejectedExecutionHandler(饱和策略):当队列和线程池都满了,说明线程池处于饱和状态,那么必须采取一种策略处理提交的新任务
    常见的策略
    a.AbortPolicy:直接抛出异常。
    b.CallerRunsPolicy:只用调用者所在线程来运行任务。
    c.DiscardOldestPolicy:丢弃队列里最近的一个任务,并执行当前任务。
    d.DiscardPolicy:不处理,丢弃掉

    8.常见的自定义线程
    Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收)
    Executors.newFixedThreadPool(int)(固定大小线程池)
    Executors.newSingleThreadExecutor()(单个后台线程)

    人这辈子没法做太多事情,所以每做一件事都要做到精彩绝伦。 因为,这就是我的宿命。人生苦短,你明白吗? 所以这是我为人生做出的选择
  • 相关阅读:
    远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较
    遍历List/Map的时候删除成员遇到的奇怪问题
    Java事务处理
    ThreadLocal学习记录
    IntelliJ IDEA+Tomcat+Nginx运行git项目
    JavaIO和JavaNIO
    Spring MVC的启动过程
    Java中的集合类
    Java中的泛型
    Java 多线程的基本概念
  • 原文地址:https://www.cnblogs.com/junjun1578/p/14919407.html
Copyright © 2020-2023  润新知