线程池

    科技2022-07-11  107

    使用线程池的好处:降低资源消耗,提高响应速度,提高线程的可管理性

    线程池实现类ThreadPoolExecutor类中提供了四个构造方法

    构造方法参数: 1.线程池的核心线程数量(重要) 2.线程池的最大线程数(重要) 3.当线程池大于核心线程数时,多余的空闲线程存活的最长时间 4.时间单位 5.任务队列,用来存储等待执行的队列(重要) 6.线程工厂,用来创建线程,一般默认即可 7.拒绝策略,当提交的任务过多而进行的即使处理时,我们可以定制策略来处理

    shutdown() :关闭线程池,线程池的状态变为 SHUTDOWN。线程池不再接受新任务了,但是队列里的任务得执行完毕。 shutdownNow() :关闭线程池,线程的状态变为 STOP。线程池会终止当前正在运行的任务,并停止理处排队的任务并返回正在等待执行的 List。

    几种常见的线程池 1.FixedThreadPool被称为可重用固定线程数的线程池,其实就是创建线程池时核心线程数与最大线程数相等 2.SingleThreadExecutor是只有一个线程的线程池。其实就是创建线程池时核心线程数与最大线程数都为1 3.CachedThreadPool是一个会根据需要创建新线程的线程池,其实就是创建线程池时核心线程数为0,最大线程数为最大值。 4.ScheduledThreadPoolExecutor就是会对队列中的任务进行排序,执行所需时间最短的放在前面先被执行,如果执行所需时间相同则先提交的任务将被先执行。

    Runnable与Callable的区别:都是接口,都采用Thread.start()启动线程,Runnable没有返回值;Callable可以返回执行结果,其返回结果是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。Callable接口的call()方法允许抛出异常;Runnable的run()方法异常只能在内部消化,不能往上继续抛。

    Processed: 0.010, SQL: 8