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

互联网网站制作公司网站开发设计概述

互联网网站制作公司,网站开发设计概述,网站后台无法审核,怎样做网站seo优化线程池#xff08;ThreadPool#xff09;是一种通过预先创建和维护一组线程的机制#xff0c;用来高效管理并发任务。线程池不仅能减少创建和销毁线程的开销#xff0c;还能更好地控制并发任务的执行。Java 中提供了多种方式来管理线程池#xff0c;其中包括 ExecutorServ…线程池ThreadPool是一种通过预先创建和维护一组线程的机制用来高效管理并发任务。线程池不仅能减少创建和销毁线程的开销还能更好地控制并发任务的执行。Java 中提供了多种方式来管理线程池其中包括 ExecutorService 和 ThreadPoolExecutor 等关键类。 一、线程池的基本概念 线程池的核心思想是维护一组可复用的线程来执行任务而不是为每个任务创建新线程。这样可以避免频繁的线程创建和销毁提升系统性能。线程池的主要好处包括 减少资源消耗通过复用线程避免了频繁创建和销毁线程的成本。提升响应速度任务不需要等待新线程的创建因为线程池中已经有线程可用。控制并发数线程池可以通过限制线程的数量控制系统中并发任务的数量防止资源耗尽。任务管理线程池提供了任务队列可以管理提交的任务支持任务的调度和优先级。 Java 的 Executor 框架为开发者提供了一种标准化的方式来使用线程池它将任务的提交与任务的执行分离使得开发者无需关心底层线程的管理细节。 二、ExecutorService 和 ThreadPoolExecutor 的使用 ExecutorService 是 java.util.concurrent 包中的一个接口提供了一组用于管理线程池的抽象方法。ThreadPoolExecutor 是 ExecutorService 接口的一个实现类提供了线程池的核心功能。 1. 使用 ExecutorService ExecutorService 是线程池的上层接口可以通过静态方法 Executors 创建常用的线程池。以下是几种常用的线程池类型 固定线程池FixedThreadPool创建一个固定大小的线程池线程池中始终有指定数量的线程在运行。新任务提交后如果线程池中所有线程都在执行任务则新任务会进入任务队列等待。 ExecutorService fixedThreadPool Executors.newFixedThreadPool(5);缓存线程池CachedThreadPool创建一个缓存线程池。线程池的大小不固定随着需求动态增长。线程闲置时会被回收适合执行大量短期任务。 ExecutorService cachedThreadPool Executors.newCachedThreadPool();单线程池SingleThreadExecutor创建一个只有单个线程的线程池所有任务将在同一个线程中顺序执行。 ExecutorService singleThreadPool Executors.newSingleThreadExecutor();调度线程池ScheduledThreadPool用于定时或周期性执行任务。 ScheduledExecutorService scheduledThreadPool Executors.newScheduledThreadPool(3);2. 提交任务 任务可以通过 ExecutorService 提交执行通常有以下几种方法 execute(Runnable)提交一个 Runnable 任务执行没有返回结果。 fixedThreadPool.execute(() - {System.out.println(Task executed by thread pool); });submit(Runnable) 和 submit(Callable)提交任务并返回 Future 对象Future 可用于获取任务执行结果。 FutureString future fixedThreadPool.submit(() - {return Task result; });3. 关闭线程池 使用完线程池后应该关闭它以释放资源。可以调用以下方法关闭线程池 shutdown()会等待线程池中的任务执行完毕后再关闭。 fixedThreadPool.shutdown();shutdownNow()立即停止所有任务并尝试中断正在执行的线程。 fixedThreadPool.shutdownNow();三、ThreadPoolExecutor 的底层实现原理 ThreadPoolExecutor 是 Java 线程池的核心实现类它提供了高度可配置的线程池管理机制。我们可以通过构造方法自定义线程池的核心参数如线程数、队列类型、拒绝策略等。其构造方法如下 public ThreadPoolExecutor(int corePoolSize, // 核心线程数int maximumPoolSize, // 最大线程数long keepAliveTime, // 非核心线程的存活时间TimeUnit unit, // 存活时间的单位BlockingQueueRunnable workQueue, // 任务队列ThreadFactory threadFactory, // 线程工厂用于创建新线程RejectedExecutionHandler handler // 拒绝策略 )1. 核心参数介绍 corePoolSize核心线程数当提交任务时如果当前线程数小于核心线程数即使线程池中有空闲线程也会创建新的线程来执行任务。 maximumPoolSize线程池的最大线程数当任务队列已满且线程数小于最大线程数时线程池会创建新线程来执行任务。 keepAliveTime非核心线程的空闲时间超过此时间后将被终止如果当前线程数大于 corePoolSize。 workQueue任务队列用于存放等待执行的任务。常用的任务队列类型有 ArrayBlockingQueue有界队列任务达到队列上限时新的任务将被阻塞或拒绝。LinkedBlockingQueue无界队列适合任务量较大的场景。SynchronousQueue没有容量的队列提交的任务必须直接交给线程执行否则会创建新线程。 RejectedExecutionHandler当线程池和任务队列都满时新的任务将被拒绝。可以选择不同的拒绝策略 AbortPolicy默认策略直接抛出 RejectedExecutionException 异常。CallerRunsPolicy调用执行任务的线程通常是提交任务的线程来执行任务。DiscardPolicy直接丢弃任务不抛异常。DiscardOldestPolicy丢弃队列中最旧的任务然后重新尝试执行当前任务。 2. 工作流程 ThreadPoolExecutor 的工作流程大致可以分为以下几个步骤 任务提交当任务通过 execute() 或 submit() 方法提交时线程池首先会检查当前线程数是否少于 corePoolSize如果是则创建新的线程执行任务。 任务入队如果线程数已经达到 corePoolSize任务会被放入 workQueue 队列中等待执行。 创建新线程当队列已满且线程数未达到 maximumPoolSize线程池会创建新的线程来执行任务。 拒绝策略如果线程数已经达到 maximumPoolSize 且队列已满线程池会根据 RejectedExecutionHandler 策略拒绝新提交的任务。 任务执行线程从任务队列中取出任务并执行任务执行完毕后线程不会立即销毁而是保持存活状态等待下一个任务。如果线程的空闲时间超过 keepAliveTime并且当前线程数超过 corePoolSize该线程将被终止。 线程销毁当线程池中的所有线程都处于空闲状态且线程数大于 corePoolSize 时线程池会根据 keepAliveTime 逐步销毁多余的线程直到只剩下核心线程。 3. 任务队列与线程数的关系 ThreadPoolExecutor 的任务处理策略基于任务队列和线程数的配置可以分为以下几种情况 如果当前线程数小于 corePoolSize则即使队列不满线程池也会优先创建新线程。如果队列已满且线程数小于 maximumPoolSize线程池会继续创建新线程来执行任务。如果队列已满且线程数已达到 maximumPoolSize任务将被拒绝触发拒绝策略。 四、总结 Java 中的 ExecutorService 和 ThreadPoolExecutor 提供了一种标准化、可扩展的线程池管理机制可以高效管理并发任务。通过线程池开发者能够减少线程频繁创建和销毁带来的开销控制并发数提升系统性能。 线程池的底层实现主要基于核心线程数、最大线程数、任务队列、存活时间以及拒绝策略等参数的组合。通过合理配置线程池可以在不同场景下实现性能优化和资源控制。
http://www.dnsts.com.cn/news/43204.html

相关文章:

  • 专门做视频的网站吗视频网站如何建设
  • dedecms 获取网站地址速成网站怎么做
  • wordpress建站吗怎么设计公司的网站
  • 网站设计怎么做链接域名注册查询入口
  • 公司电商网站建设方案模板临沂广润网站建设
  • 网站建设后还有什么费用汕头seo排名公司
  • 南宁做网站价格有关网站建设的文章
  • 自媒体自助下单网站怎么做温州网蚁网络科技有限公司
  • 如何做公司自己的网站首页青海保险网站建设公司
  • 网站排名查询软件alexaphp视频网站开发实战
  • 备案价公示网站昆明 网站设计
  • 长沙做网站的有哪些互联网技术公司
  • 苏州找网络公司建网站推广合作
  • 怎么用域名做邮箱网站咸阳免费做网站
  • 凡科网网站建设单个网页打不开是什么原因
  • 永久免费网站服务器做公司网站要去哪里找人做
  • 揭阳市网站建设iis配置网站
  • 龙岩网站建设全包网站关于我们怎么做
  • 网站后台上传图片做难吗?有企业信息的网站
  • ps做的网站如何转入dwwordpress 用户验证
  • 网业认证怎么认证手机优化好还是不优化好
  • 爱站网站长seo综合查询工具网站建设 翰臣科技
  • 开个网站多少钱一年怎么做淘宝客采集网站
  • 广东深圳网站建设微信商城运营wordpress 下载站模板
  • 西安建设手机网站网站建设有啥费用
  • 二手手机回收网站开发网站正在建设中请稍后
  • 唐山网站网站建设赶集网发布信息免费
  • 网站建设哪家好推荐万维科技义乌做网站哪个公司好
  • 自已建网站有专门做检验的视频网站吗
  • 电子邮箱网站注册十堰哪里有做网站的