线程
**线程池类型:
-
newFixedThreadPool 创建一个可重用固定线程数的线程池,以共享的无界怼你了方式来运行这些线程,在任意
点,在大多数Threads线程会处于处理任务的活动状态。如果在所有线程处于活动状态是提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭钱的执行期间由于失败而导致任何线程终止,那么一个新线程将代替他执行后续的任务。在某个线程被显示的关闭之前,池中的线程将一直存在。 -
newCachedThreadPool 创建一个可根据需要创新线程的线程池,但是在以前构造的线程可用时将重用他们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用ececute将重用以前构造的相乘(如果线程可用)。如果现有相乘没有可用的,则创建一个新线程并添加到
池中。终止并从缓存中溢出那些已有60s没有被使用的线程。所以长时间保持空闲的线程不会使用任何资源。 -
newScheduledThreadPool 创建一个线程池,它可安排在给延迟后运行命令或者定期的执行
-
newSingleThreadExecutor 返回一个只有线程的线程池,这个线程池可以在线程死后或发生异常是重新启动一个线程来替代原来的线程继续执行
**核心参数 -
corePoolSize
-
maximumPoolSize
-
keepActiveTime
-
workQueue
**流程梳理
用户提交任务,查看核心线程池是否满,没满则创建线程,执行任务,
满了则交给缓冲队列,缓冲队列没满,则将任务添加到队列,满了,则
判断最大线程池是否满了,没满则创建线程,执行任务,满了则拒绝策略