当前位置: 首页 > news >正文

婚纱摄影网站seo方案传媒网站建设方案

婚纱摄影网站seo方案,传媒网站建设方案,手机端网站开发书籍,wordpress小程序详解什么是线程池 线程池(Thread Pool)是一种用于管理和复用线程的技术,它可以在多线程编程中有效地管理线程的创建、执行和销毁。是一种有效管理线程的机制,可以提高多线程编程的效率、性能和资源利用率。它在许多并发编程的场景中被…

什么是线程池

线程池(Thread Pool)是一种用于管理和复用线程的技术,它可以在多线程编程中有效地管理线程的创建、执行和销毁。是一种有效管理线程的机制,可以提高多线程编程的效率、性能和资源利用率。它在许多并发编程的场景中被广泛使用,如服务器端程序、并行计算、异步任务等。

线程池的好处包括

  1. 提高性能:由于线程的创建和销毁是一项耗时的操作,使用线程池可以避免频繁地创建和销毁线程,提高了程序的性能。

  2. 资源管理:线程池可以限制线程的数量,避免线程过多导致系统资源的浪费和性能下降。

  3. 控制并发度:通过控制线程池的大小,可以限制并发任务的数量,避免系统资源过载和响应时间过长的问题。

  4. 提供任务排队和调度:线程池可以对任务进行排队和调度,确保任务按照一定的顺序和优先级执行。

线程池的参数详细介绍

  1. 核心线程数(corePoolSize):核心线程数是线程池中保持活动状态的线程数量。在没有任务执行时,核心线程会一直保持存活状态。如果任务数量超过核心线程数,线程池会创建新的线程来执行任务。

  2. 最大线程数(maximumPoolSize):最大线程数是线程池中允许存在的最大线程数量。当任务数量超过核心线程数且任务队列已满时,线程池会创建新的线程,直到达到最大线程数。超过最大线程数的任务会根据配置的拒绝策略进行处理。

  3. 空闲线程存活时间(keepAliveTime):当线程池中的线程数量超过核心线程数时,多余的空闲线程会在一定时间内保持活动状态,等待新的任务。keepAliveTime 是空闲线程的存活时间,超过这个时间线程会被销毁,直到线程池的线程数量不超过核心线程数。

  4. 时间单位(TimeUnit):对于核心线程数、最大线程数和空闲线程存活时间,通常需要指定一个时间单位,如秒、毫秒等。

  5. 任务队列(workQueue):任务队列用于存储待执行的任务。线程池根据任务数量和线程池状态来决定任务的执行方式。常见的任务队列有无界队列和有界队列,如 LinkedBlockingQueue 和 ArrayBlockingQueue。

  6. 线程工厂(threadFactory):线程工厂用于创建新的线程实例。通过指定线程工厂,可以自定义线程的一些属性,如名称、优先级等。

  7. 拒绝策略(rejectedExecutionHandler):当任务数量超过线程池的最大线程数时,线程池会对新的任务采取一定的拒绝策略。常见的拒绝策略有直接抛出异常、丢弃任务、丢弃最旧的任务和调用者运行等。

正确地配置线程池参数可以避免线程过多或过少导致的性能问题,并提高任务的处理效率和并发度。

若把创建一个线程池想象成开个公司. 每个员工相当于一个线程.则:

corePoolSize: 正式员工的数量. (正式员工, 一旦录用, 永不辞退)
maximumPoolSize: 正式员工 +临时工的数目. (临时工: 一段时间不干活, 就被辞退).
keepAliveTime: 临时工允许的空闲时间. unit:
keepaliveTime 的时间单位, 是秒, 分钟, 还是其他值.
workQueue: 传递任务的阻塞队列
threadFactory: 创建线程的工厂, 参与具体的创建线程工作

RejectedExecutionHandler: 拒绝策略,如果任务量超出公司的负荷了接下来怎么处理.
AbortPolicy(): 超过负荷, 直接抛出异常.
CallerRunsPolicy(): 调用者负责处理
DiscardOldestPolicy(): 丢弃队列中最老的任务.
DiscardPolicy(): 丢弃新来的任务.

线程池的工作流程

  1. 创建线程池:在使用线程池之前,首先需要创建一个线程池实例。线程池可以使用编程语言或框架提供的相关API来创建,通常需要指定线程池的参数,如核心线程数、最大线程数、任务队列等。

  2. 提交任务:一旦线程池创建完成,就可以将需要执行的任务提交给线程池。任务可以是用户定义的代码块、函数或对象。任务的提交可以通过调用线程池提供的提交方法进行。

  3. 任务排队:当任务提交到线程池后,线程池会将任务添加到任务队列中。任务队列可以是有界队列或无界队列,它负责存储待执行的任务。

  4. 线程分配:线程池中的线程管理器会管理和分配线程。如果当前线程池中的线程数小于核心线程数,线程池会创建新的线程来执行任务。如果线程池中的线程数已经达到核心线程数,新的任务将被放入任务队列中等待执行。

  5. 任务执行:空闲的线程会从任务队列中取出任务,开始执行任务的代码。当一个线程执行完一个任务后,它会继续从任务队列中获取下一个任务并执行,直到任务队列为空。

  6. 拒绝策略:如果任务队列已满且线程池中的线程数已达到最大线程数,新提交的任务可能会被线程池拒绝。线程池会根据配置的拒绝策略来处理这些被拒绝的任务,可以选择抛出异常、丢弃任务、丢弃队列中最旧的任务或者由调用者线程执行任务。

  7. 线程回收:如果线程池中的线程处于空闲状态,并且超过了指定的空闲线程存活时间,这些空闲线程会被终止并从线程池中移除,以减少资源消耗。

使用Executors 创建常见的线程池

newFixedThreadPool: 创建固定线程数的线程池
newCachedThreadPool: 创建线程数目动态增长的线程池.
newSingleThreadExecutor:创建只包含单个线程的线程池.
newScheduledThreadPool: 设定 延迟时间后执行命令,或者定期执行命令. 是进阶版的
Timer.

Executors 本质上是 ThreadPoolExecutor 类的封装.
使用newFixedThreadPool工厂方法创建“固定数量的线程池”:

public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, // 核心线程数nThreads, // 最大线程数0L, // 线程最大空闲(Idle)时长TimeUnit.MILLISECONDS, // 时间单位:毫秒new LinkedBlockingQueue<Runnable>() //任务的排队队列,无界队列);}

newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor() {return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, // 核心线程数1, // 最大线程数0L, // 线程最大空闲(Idle)时长TimeUnit.MILLISECONDS, //时间单位:毫秒new LinkedBlockingQueue<Runnable>() //无界队列));}

newCachedThreadPool

public static ExecutorService newCachedThreadPool(){return new ThreadPoolExecutor(0, // 核心线程数Integer.MAX_VALUE, // 最大线程数60L, // 线程最大空闲(Idle)时长TimeUnit.MILLISECONDS, // 时间单位:毫秒new SynchronousQueue<Runnable>() // 任务的排队队列,无界队列);}

newScheduledThreadPool

public ScheduledThreadPoolExecutor(int corePoolSize) {super(corePoolSize, // 核心线程数Integer.MAX_VALUE,  // 最大线程数0, //线程最大空闲(Idle)时长NANOSECONDS,//时间单位new DelayedWorkQueue() //任务的排队队列);}

使用Executors创建的"可缓存线程池"没有固定的线程数量限制,它会根据任务的到来自动创建线程。如果任务的到来速度过快,线程池可能会不断地创建新线程,导致线程数无限增长。这可能会消耗大量的系统资源,甚至导致系统崩溃。

http://www.yayakq.cn/news/837509/

相关文章:

  • 网站在线答题怎么做晋江网站设计泉州名扬专业
  • 同城版网站建设公司网站横幅如何做
  • 化州市住房和城乡建设局网站物流公司 网站模板
  • 站长工具视频wordpress更改logo宽度
  • python 网站开发小项目免费网站免费网站平台
  • 微信电脑网站是什么原因企业运营管理方案
  • 黑帽seo怎么做网站排名wordpress中category参数
  • 大学生网站设计论文范文学广告设计
  • 电脑接单做任务平台重庆seo搜索引擎优化推荐
  • 数字货币交易网站开发怎么做雅虎搜索引擎
  • 做任务挣钱的网站聚如何自己做一个网页
  • 网站开发logo天津网站经营性备案
  • 网站建设管理相关规定网站框架建设
  • 手机免费建站工具网站怎么快速做收录
  • 光明新区做网站跨境电商平台有哪些推广方式
  • 旅游做视频网站网站制作需要多长时间
  • 网站开发兼容性无锡建设网站公司
  • 网站服务器基本要素个人资质网站做推广
  • 营销型网站建设易网拓广西住建局官方网站
  • 地方生活门户网站有哪些秦皇岛seo网站推广
  • 小白如何做网站建设公众号wordpress如何添加顶层菜单
  • 有源码手机怎么搭建网站wordpress多个视频
  • 一家专门做母婴的网站宣威市网站建设
  • 河南郑州网站推广优化做信息类网站
  • 石家庄做网站公司企业门户网站系统
  • 淘宝客领券网站怎么做优化营商环境的措施建议
  • 嘉兴网站建设推广网络培训网站
  • 有什么网站可以做商品展示的吗游戏网官网
  • 房产经纪人如何做网站吸客网站建设与设计教程视频教程
  • easyUI网站开发邯郸网站seo