线程池理解

一、线程分为用户线程(ULT)和内核线程(KLT)

  JVM使用的是KLT模型。

二、线程是稀缺资源,它的创建和销毁是一个相对偏重且耗资源的操作,而java线程依赖于内核线程,创建线程需要进行操作系统状态切换,为避免资源过度消耗需要设法重用线程执行多个任务,线程池就是一个线程缓存,负责对线程进行一个统一分配、调优和分配。

什么时候使用线程池?

  单个任务处理时间比较短;

  需要处理的任务数量比较大。

线程池的五种状态:

  Running:能接受新任务以及处理已添加的的任务

  Shutdown:不接受新任务,可以处理已添加的任务

  Stop:不接受新任务,不处理已添加的任务,并且中断正在处理的任务

  Tidying:所有任务已经终止,ctl记录的“任务数量”为0,ctl负责记录线程池的运行状态与活动线程数量。

  Terminated:线程池彻底终止,则线程池转变为terminated状态。

原文地址:https://www.cnblogs.com/jccjcc/p/14129682.html