并发专题-自己动手实现一个线程池

分享
程序员 2024-10-6 04:24:12 109 0 来自 中国
媒介

本文告急参照线程池ThreadPoolExecutor的实现方式自己写一个线程池,告急是由于ThreadPoolExecutor的源码读起来照旧挺费劲,想通过自己仿写的方式加深明确
起告急相识ThreadPoolExecutor线程池的工作机制,不明确的看这里
开端思绪

须要办理的题目


  • 线程池的告急作用是生存限定命目的线程,当有实行任务时,从中选择某个线程去实行,而不是来个任务就new一个Thread,鉴于thread.start()实行完成之后就会烧毁,以是怎样保持线程不烧毁是个关键,办理思绪有许多,好比可以给线程这样一个恒久运行任务:当用用户任务到达时实行用户任务,没有用户任务时wait,用户任务出现时再notify唤醒实行,这样线程就不会被烧毁掉
  • 线程池在全部线程都工作的情况下,依然可以存储任务,等线程池某个线程空闲时,任务就会被实行
办理方案

联合以上俩点,终极办理方案如下:
利用壅闭队列BlockingQueue来生存用户任务,长处在于获取时假如取不到就会不绝壅闭等候,而每个线程实行的实际任务实行获取任务队列中的用户任务,取不到就等候,取到了就实行,实行完之后再返来等候,形成一个死循环,线程实行的就是一个永世性任务,不会被烧毁(等候的过程壅闭也不会占用CPU)
开端实现

起首线程池的本质是Executor,以是我们也按照规范继续并实现execute方法
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 18:52, Processed in 0.191465 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表