主页 > 开源代码  > 

线程池的介绍

线程池的介绍
线程池的分类

FixedThreadPool: 固定线程池:线程池中的线程数量固定,这些线程会一直存在,不会随任务的增 加或减少而动态调整,超出的任务会在队列中等待。 使用场景:任务量比较固定但耗时较长的任务。 CachedThreadPool: 缓存线程池:可根据需要创建新线程的线程池,如果新任务到达,但线程池中没有可用线程,则创建一个新线程并添加到池中,如果有被使用完但是还没销毁的线程,就复用该线程。线程池中超过60秒未使用的线程,将会被移除和销毁。 使用场景:任务量大但耗时少的任务 SingleThreadPool: 单线程池,使用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执 行。 使用场景:多个任务顺序执行(FIFO,优先级)。 WorkStealingPool: 工作窃取线程池,创建一个拥有多个任务队列(以便减少连接数)的线程池; 使用场景:会创建一个含有足够多线程的线程池,来维持相应的并行级别,它会通过工作窃取的方式,使得多核的 CPU 不会闲置,总会有活着的线程让 CPU 去运行。 如果当前工作线程处理完自己本地任务队列中的任务时,就会去全局队列或者其他工程线程的队列里面查找工作任务,帮助它们完成。 利用Work Staling,可以更好实现负载均衡。 ScheduledThreadPool 计划线程池(定时线程池,调度线程池) 使用场景:定时以及周期性执行任务。

线程池模式

线程池模式一般分为两种:L/F领导者与跟随者模式,HS/HA半同步/半异步模式。 领导者跟随者模式,在线程池中的线程可处在3种状态之一:领导者leader、追随者follower或工作者processor。任何时刻线程池只有一个领导者线程。事件到达时,领导者线程负责消息分离,并从处于追随者线程中选出一个来当继任领导者,然后将自身设置为工作者状态去处置该事件,处理完毕后工作者线程将自身的状态置为追随者。在ACE中,提供了领导者跟随者模式实现。 半同步/半异步模式又称为生产者消费者模式,是比较常见的实现方式,比较简单。分为同步层、队列层、异步层三层。同步层的主线程处理工作任务并存入工作队列,工作线程从工作队列取出任务进行处理,如果工作队列为空,则取不到任务的工作线程进入挂起状态。由于线程间有数据通信,因此不适于大数据量交换的场合。

标签:

线程池的介绍由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“线程池的介绍