首页文章正文

如何设计一个线程池,创建线程池的几种方式

线程池的几种实现方式 2023-12-11 12:27 788 墨鱼
线程池的几种实现方式

如何设计一个线程池,创建线程池的几种方式

4. ThreadPoolExecutor中表示线程池状态设计在ThreadPoolExecutor中使用一个AtomicInteger类型的ctl字段来描述线程池地运行状态和线程数量,通过ctl的高3位来表示线程池的5种状态,当初始化一个线程池时, 此时线程池中线程数为0 , 当有任务来的时候,就去创建一个线程去执行任务,此时继续来任务的话,再次创建线程直到线程数达到了corePoolSize , 此时后面的任

手写一个简单线程池第一步:定义线程池接口首先,我们需要定义一个线程池接口,用来表示线程池应该具备哪些功能。一个简单的线程池应该至少具备以下几个功能:设计线程池线程池设计的思路都大同小异:将任务写入到阻塞队列中,然后线程池中的空闲线程从队列中获取任务执行,执行完成后再从队列获取新的任务执行。设计线程池需要考虑的几个特

先判断线程池中核心线程池所有的线程是否都在执行任务。如果不是,则新创建一个线程执行刚提交的任务,否则,核心线程池中所有的线程都在执行任务,则进入第2步;判断当前阻塞队列是否已满,如果未满,保证全局线程池只有一个ThreadPool(intnum=10);voidcreateThreads();//创建内存池voidclearThreads();//回收线程voidclearQueue();//清空任务队列staticvoid*threadFunc(void*

可以考虑使用HashSet来存储线程,也就是充当线程池的角色,当然,HashSet会有线程安全的问题需要考虑,那么我们可以考虑使用一个可重入锁比如ReentrantLock,凡是增删线程池的线程,都需要锁住。privatt.Start(); } }//向线程池添加一个任务publicvoidAddTask(Action job,object obj, Action

后台-插件-广告管理-内容页尾部广告(手机)

标签: 创建线程池的几种方式

发表评论

评论列表

51加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号