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

工业信息化部网站备查询成品app

工业信息化部网站备查询,成品app,中国十大最著名室内设计师,北京科技网站建设公司线程池 简介JUC包线程池介绍线程池最常问也最常用-参数线程执行分析-线程是怎么运行的进程和线程的区别Executors工厂类提供四种线程池Executors和ThreaPoolExecutor创建线程池的区别两种提交任务的方法spring集成的线程池 简介 线程池作为实际使用和面试较多的技能区, 学习是… 线程池 简介JUC包线程池介绍线程池最常问也最常用-参数线程执行分析-线程是怎么运行的进程和线程的区别Executors工厂类提供四种线程池Executors和ThreaPoolExecutor创建线程池的区别两种提交任务的方法spring集成的线程池 简介 线程池作为实际使用和面试较多的技能区, 学习是很有必要的 JUC包线程池介绍 Java里面线程池的顶级接口是ExecutorExecutor并不是一个线程 池而只是一个执行线程的工具。真正的线程池接口是ExecutorService 它的默认实现ThreadPoolExecutor; 静态工厂提供的线程池都基于ThreadPoolExecutor构造实现 ScheduledExecutorService() 用于周期性任务的线程池接口,ScheduledThreadPoolExecutor 继承ThreadPoolExecutor的ScheduledExecutorService接口实现周期性任务调度的类实现(不重要) 线程池最常问也最常用-参数 核心线程数corePoolSize: 核心线程会一直存活,即使没有任务处理 任务队列queueCapacity: 当核心线程达到最大时, 其余任务回放在任务队列中 最大线程数maxPoolSize: 队列容量满了, 如果当前线程数小于最大线程数, 会继续创建线程处理任务 线程空闲时间keepAliveSeconds: 如果线程空闲时间达到了, 则会退出, 直到等于核心线程数, 如果允许核心线程超时, 则会最终0 允许核心线程超时allowCoreThreadTimeOut: 如果为true, 则核心线程在存活时间到了后也会关闭 预先启动核心线程prestartAllCoreThreads: 如果为true, 则核心线程预先启动 任务拒绝策略rejectedExecutionHandler: 只有callsRunPolicy可以处理全部任务, 其余的会存在抛出任务 ThreadPoolTaskExecutor businessExecutor new ThreadPoolTaskExecutor();businessExecutor.setCorePoolSize(5);businessExecutor.setMaxPoolSize(10);businessExecutor.setKeepAliveSeconds(60);businessExecutor.setQueueCapacity(1000);businessExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());businessExecutor.setThreadNamePrefix(businessExecutor);线程执行分析-线程是怎么运行的 线程进入时, 如果当前线程数小于核心线程数, 则会创建线程处理 如果当前线程数大于等于核心线程数, 且任务队列未满, 则会把线程放入等待队列中 如果线程数大于等于核心线程数, 且任务队列已满 如果线程数小于最大线程数, 则创建线程 如果线程已经等于最大线程数, 则会根据队列策略处理后续线程 如果是aboutPolicy, 则抛弃之后的线程, 抛出异常 如果是discardPolicy, 也是抛弃之后的线程, 无感知 如果是discardOldPolicy, 则抛弃最早的线程, 无感知 如果是callsRunPolicy,则是不处理, 抛出线程, 使用execute方法的上层线程去处理, 让提交线程去处理任务, 会出现提交任务负反馈, 但是也给了一定时间让线程池处理线程. 进程和线程的区别 启动一个程序就会有一个进程, 程序和程序之间的通信就是进程之间的通信 一般一个接口生成一个线程, 调用程序时, 给每个请求分配一个线程去处理 Executors工厂类提供四种线程池 一般不要用,请求量大会出现oom问题 它们的底层实现都是构造ThreadPoolExecutor newFixedThreadPool创建一个固定大小的线程池可控制线程最大并发数超出的线程会在队列中等待。 FixedThreadPool 用于负载比较重的服务器为了资源的合理利用需要限制当前线程数量。 newSingleThreadExecutor 创建一个单线程化的线程池它只会用唯一的工作线程来执行任务保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。 SingleThreadExecutor 用于串行执行任务的场景每个任务必须按顺序执行不需要并发执行。 newCachedThreadPool 创建一个可缓存线程池如果线程池长度超过处理需要可灵活回收空闲线程若无可回收否则新建线程。线程最大并发数不可控制 CachedThreadPool 用于并发执行大量短期的小任务或者是负载较轻的服务器。 newScheduledThreadPool 创建一个定时线程池支持定时及周期性任务执行。 ScheduledThreadPoolExecutor 用于需要多个后台线程执行周期任务同时需要间隔执行任务 Executors和ThreaPoolExecutor创建线程池的区别 executors newFixedThreadPool 和 newSingleThreadExecutor: 主要问题是堆积的请求处理队列可能会耗费非常大的内存甚至 OOM。 newCachedThreadPool 和 newScheduledThreadPool: 主要问题是线程数最大数是 Integer.MAX_VALUE可能会创建数量非常多的线程甚至 OOM。 ThreaPoolExecutor 正确创建线程池方式只有一种就是走它的构造函数参数自己指定 两种提交任务的方法 ExecutorService 提供了两种提交任务的方法 execute()提交不需要返回值的任务submit()提交需要返回值的任务 execute() 的参数是一个 Runnable也没有返回值。因此提交后无法判断该任务是否被线程池执行成功。 submit() 有三种重载参数可以是 Callable 也可以是 Runnable。 同时它会返回一个 Funture 对象通过它我们可以判断任务是否执行成功。 获得执行结果调用 Future.get() 方法这个方法会阻塞当前线程直到任务完成。 future不仅可以查看线程返回值,还可以查看线程执行状态 spring集成的线程池 spring默认提供七种线程池 最常用ThreadPoolTaskExcutor,本质上是对ThreadPoolExcutor的包装 只需要加Autowired就可以使用 该线程池的默认线程数量为设备的CPU核心数8核则8线程16核则16线程可以通过配置更改。 /** spring 提供的线程池 */ Autowired private ThreadPoolTaskExecutor poolTaskExecutor;异步默认使用的是simpleAysncTaskExcutor,单线程异步线程,每个请求创建一个线程,所以异步线程需要重写线程池 还有concurrentTaskExcutor ,simpleThreadPoolTaskExcutor 等不常用
http://www.w-s-a.com/news/253923/

相关文章:

  • 哪个网站做调查问卷赚钱短视频制作神器
  • 上海企业响应式网站建设推荐汕头网络优化排名
  • 怎么建立公司网站平台怎么将网站做成公司官网
  • 培训学校网站怎样快速建设网站模板
  • 建设电子商务网站论文云服务器安装wordpress
  • 做展板好的网站学校的网站开发过程
  • 宁波搭建网站价格西部数码网站正在建设中是什么意思
  • 吉林省建设项目招标网站苏州网络推广定制
  • 网站域名所有权证明引流推广接单
  • 做网站百度百科孟州网站建设
  • 服务网站建设企业广州模板建站系统
  • 怎么做属于自己的免费网站浏览器游戏网址
  • 上海城乡住房建设厅网站西安网站推广慧创科技
  • 做策划网站推广怎么写简历互联网公司手机网站
  • 怎么做宣传网站网站建设采购项目合同书
  • 网站的空间和域名备案做网站要会写什么
  • wap 网站源码企业网站被转做非法用途
  • 下载网站模板怎么使用做物流网站的公司
  • 网站 商城 app 建设建设银行江苏省行网站
  • 广州网站开发建设西安广告公司联系方式
  • 怎么用腾讯云服务器做网站个人网站开发视频
  • 网站建设技术代码坦洲网站建设公司哪家好
  • 阿里云对象存储做静态网站怎样做网站性能优化
  • 怎样做理财投资网站装修平面图用什么软件简单
  • 建手机wap网站大概多少钱苏州网站设计公司有哪些
  • 网站建设需求文件学校网站建设方案及报价
  • 网站开发一般多少钱wordpress打赏赞插件
  • 做中国o2o网站领导唐山网站制作软件
  • 门户网站简介做网站一天能接多少单
  • 论坛类网站建设遵义网站制作外包