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

浅谈网站页面框架设计禁忌网站有哪些

浅谈网站页面框架设计,禁忌网站有哪些,手机网站 cms,交通信息华建设网站11、线程池(重点) 线程池有三大方法、七大参数、4中拒绝策略 什么是池化技术 简单理解:预先创建,要用就拿 池化”(Pooling)是一种资源管理技术,用于优化资源的使用效率,减少资源…

11、线程池(重点)

线程池有三大方法、七大参数、4中拒绝策略

什么是池化技术

简单理解:预先创建,要用就拿

池化”(Pooling)是一种资源管理技术,用于优化资源的使用效率,减少资源创建和销毁的开销。池化技术的核心思想是预先创建并维护一组资源对象(如线程、数据库连接、对象实例等),当需要使用这些资源时,从池中获取一个可用的资源,使用完毕后将其归还到池中,而不是每次都重新创建和销毁资源。

这里讲述池化技术之一>线程池

线程池的好处:

  • 减少线程创建和销毁的开销:线程的创建和销毁是相对耗时的操作,线程池通过复用线程,避免了频繁的线程创建和销毁,从而提高了程序的性能。
  • 提高线程的可管理性:线程池可以对线程进行统一管理,例如限制线程的最大数量、设置线程的优先级等,避免线程过多导致的系统资源耗尽问题。
  • 提高响应速度:当有任务到来时,可以直接从线程池中获取线程执行,而不需要等待线程的创建,从而提高了系统的响应速度。

下面用自定义线程池的代码演示三大方法,七大参数、四大拒绝策略

package com.yw.Threadchi;import java.util.concurrent.*;public class Demo1 {public static void main(String[] args) {//三大线程池操作,不建议,可能会造成资源损耗
//        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();//单个线程
//        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);//创建一个固定大小的线程池
//        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();//可伸缩的线程池,可根据情况调节自身大小ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2,5,3,TimeUnit.SECONDS,new LinkedBlockingQueue<>(3),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());try {for (int i = 0;i < 9;i++) {threadPoolExecutor.execute(() -> {System.out.println(Thread.currentThread().getName() + "OK~");});}} catch (Exception e) {throw new RuntimeException(e);} finally {threadPoolExecutor.shutdown();}}}
corePoolSize

含义:核心线程数,即线程池中始终保持的线程数量。

作用

  • 当线程池中的线程数量小于 corePoolSize 时,即使有线程空闲,线程池也会优先创建新的线程来处理任务。
  • 这些核心线程默认会一直存活,即使它们处于空闲状态,也不会被销毁(除非设置了 allowCoreThreadTimeOuttrue)。
maximumPoolSize

含义:最大线程数,即线程池中允许的最大线程数量。

作用

  • 当线程池中的线程数量达到 corePoolSize 且任务队列已满时,线程池会尝试创建新的线程来处理任务,但线程数量不会超过 maximumPoolSize
  • 如果线程池中的线程数量已经达到 maximumPoolSize,且任务队列已满,此时再有新任务提交,线程池会拒绝执行任务,并抛出 RejectedExecutionException 异常(除非设置了拒绝策略)。
keepAliveTime

含义:非核心线程的空闲存活时间,即当线程池中的线程数量大于 corePoolSize 时,多余的线程在空闲状态下可以存活的最大时间。

作用

  • 如果一个线程在空闲状态下超过了 keepAliveTime,它会被销毁,从而减少线程池的资源占用。
  • 该参数仅对非核心线程有效,核心线程默认不会被销毁(除非设置了 allowCoreThreadTimeOuttrue)。
unit

含义keepAliveTime 参数的时间单位,用于指定 keepAliveTime 的时间单位。

常见的时间单位有 TimeUnit.SECONDS(秒)、TimeUnit.MILLISECONDS(毫秒)、TimeUnit.MINUTES(分钟)等。

workQueue

含义:任务队列,用于存储等待执行的任务。

作用

  • 当线程池中的线程数量达到 corePoolSize 时,新提交的任务会被放入任务队列中等待执行。
  • 如果任务队列已满且线程池中的线程数量小于 maximumPoolSize,线程池会创建新的线程来处理任务。
  • 如果大于了maximumPoolSize,会根据对应的拒绝策略拒绝线程

常见任务队列类型

  • ArrayBlockingQueue:基于数组的有界阻塞队列,需要指定队列容量。
  • LinkedBlockingQueue:基于链表的无界阻塞队列(实际上有最大容量限制,但通常很大)。
  • SynchronousQueue:不存储任务的阻塞队列,每个插入操作必须等待一个移除操作,反之亦然。
  • PriorityBlockingQueue:支持优先级排序的无界阻塞队列。
threadFactory

含义:线程工厂,用于创建新线程。

作用

  • 默认情况下,线程池会使用 Executors.defaultThreadFactory() 创建线程,但可以通过自定义 ThreadFactory 来设置线程的名称、优先级等属性。

  • 一般不会改变,直接用Executors.defaultThreadFactory();

handler

含义:拒绝策略,用于处理线程池拒绝任务的情况。

作用

  • 当线程池中的线程数量达到 maximumPoolSize 且任务队列已满时,再有新任务提交,线程池会调用拒绝策略来处理这些任务。

四大拒绝策略
  • AbortPolicy:默认拒绝策略,抛出 RejectedExecutionException 异常。

  • CallerRunsPolicy:由提交任务的线程(调用者线程)来执行任务。

  • DiscardPolicy:直接丢弃任务,不抛出异常。

  • DiscardOldestPolicy:丢弃队列中最老的任务(即队列头部的任务),然后尝试将新任务加入队列。

扩展:最大线程该如何定义?

根据具体任务类型cpu密集型和io密集型来确定最大线程,是优化线程池性能的关键步骤

CPU密集型任务

对于CPU密集型任务,线程池中的线程主要在执行计算操作,CPU利用率较高。因此,线程数量应与CPU核心数相匹配,以避免过多的上下文切换和资源竞争。

建议的最大线程数

  • 核心线程数(corePoolSize:设置为CPU核心数。

  • 最大线程数(maximumPoolSize:设置为CPU核心数的1.5到2倍。

I/O密集型任务

对于I/O密集型任务,线程大部分时间都在等待I/O操作完成,CPU利用率较低。因此,可以设置更多的线程来提高系统的并发性能。

建议的最大线程数

  • 核心线程数(corePoolSize:设置为CPU核心数的2到4倍。

  • 最大线程数(maximumPoolSize:设置为CPU核心数的数倍,甚至更高(如10倍)。


文章转载自:

http://MvQzAYAF.dgknL.cn
http://d0FmVHiq.dgknL.cn
http://dgc4nt1x.dgknL.cn
http://Cao2IhvF.dgknL.cn
http://cQnqCWOt.dgknL.cn
http://fxPlOql5.dgknL.cn
http://fDQvP2Hq.dgknL.cn
http://5Hanccrw.dgknL.cn
http://4LQEi2Ln.dgknL.cn
http://aUHFfu3D.dgknL.cn
http://X15xt3yC.dgknL.cn
http://uLOTDbhK.dgknL.cn
http://gX65yJAh.dgknL.cn
http://eMxvOs76.dgknL.cn
http://GuXpaEFl.dgknL.cn
http://Mtjj058y.dgknL.cn
http://x0lCmUia.dgknL.cn
http://WMUbKrcL.dgknL.cn
http://VBLbOVq1.dgknL.cn
http://WGraJ4kG.dgknL.cn
http://N4L3xMPA.dgknL.cn
http://qyDWUhhb.dgknL.cn
http://MXbaQ8oK.dgknL.cn
http://i6WPEkuq.dgknL.cn
http://pNz0WbDr.dgknL.cn
http://LcQIPh8l.dgknL.cn
http://u9AZtBOH.dgknL.cn
http://6lgqJxoH.dgknL.cn
http://1D3n0YIK.dgknL.cn
http://rhk5YUR7.dgknL.cn
http://www.dtcms.com/wzjs/746448.html

相关文章:

  • 纪检监察信息网站建设网络品牌推广策划
  • 福州思企互联网站建设公司大连做网站的企业
  • 全国招聘网站排名设计师主题 wordpress
  • 招聘织梦网站广告联盟看广告赚钱
  • 四川省查询建设证书的网站一个网站有几个域名
  • 广州网站建设公司做设计最好的参考网站
  • 做网站市场价无锡网站营销公司简介
  • 公司注册网站及流程丹阳网站建设价位
  • 怎么区分模板网站学生作业做网站需要
  • 骏域网站建设专家东莞电商网站开发文献汇总
  • 做一个论坛网站要多少钱百度旗下的外贸建站公司
  • 可信网站是否有规定必须做天津全包圆装修公司电话
  • 做网站多少钱一个辽宁建设网站首页
  • 一级a做爰片免费网站性恔地方网站 源码
  • 专门做书单的网站wordpress主题乱码
  • 做外贸仿牌都用哪些网站网站建设环境搭建心得体会
  • 常州网站建设公司平台东莞加盟网站建设
  • wordpress实现网站勋章功能网络维护电话
  • 山东网站建设wordpress login 图标
  • 网络平台建站流程网站的建设目标有哪些
  • 济宁专业网站制作公司河北省最新消息
  • 网站建设需要哪些语言那个企业网站是用vue做的
  • 网站开发公司首页电子商务网站推广实训报告
  • 冒用公司名义做网站自己建一个影视网站要怎么做
  • 做网站背景windows做网站服务器吗
  • 怎样做网站推广啊seo岗位工资
  • 网站和公众号的区别是什么意思中文网站建设小组
  • 用服务器建立网站教程广告设计需要学多久
  • 网站建立计划书微信公众号分销系统
  • 电子商务网站开发岗位现在有没有免费的网站