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

网站建设可行性报告模板自己接单的平台

网站建设可行性报告模板,自己接单的平台,无锡做网站要多少钱,wordpress列表图片alt属性线程池 简介JUC包线程池介绍线程池最常问也最常用-参数线程执行分析-线程是怎么运行的进程和线程的区别Executors工厂类提供四种线程池Executors和ThreaPoolExecutor创建线程池的区别两种提交任务的方法spring集成的线程池 简介 线程池作为实际使用和面试较多的技能区, 学习是…

线程池

  • 简介
    • JUC包线程池介绍
    • 线程池最常问也最常用-参数
    • 线程执行分析-线程是怎么运行的
    • 进程和线程的区别
    • Executors工厂类提供四种线程池
    • Executors和ThreaPoolExecutor创建线程池的区别
    • 两种提交任务的方法
    • spring集成的线程池

简介

线程池作为实际使用和面试较多的技能区, 学习是很有必要的

JUC包线程池介绍

在这里插入图片描述
Java里面线程池的顶级接口是Executor,Executor并不是一个线程

池,而只是一个执行线程的工具。真正的线程池接口是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.yidumall.com/news/34808.html

相关文章:

  • 做快消品的网站武汉seo优化服务
  • 网络营销推广方案内容seo行业岗位有哪些
  • 宁夏 网站开发长春网站建设策划方案
  • 做的比较好的购物网站网页自动点击软件
  • 河北省城乡建设培训网官方网站建站平台有哪些
  • 网页作业班级网站怎么做网页做推广
  • 初学者毕业设计做网站百度竞价返点一般多少
  • 宝塔搭建wordpress主机地址百度推广seo怎么学
  • 政府门户网站安全建设公司怎样注册一个自己的平台
  • 一个空间做2个网站吗seo关键词优化价格
  • wordpress前端用户seo线下培训班
  • 移动端包括哪些seo推广优化方案
  • 深圳网站建设怎么样怎么利用互联网推广
  • 网站改版推荐seo先上排名后收费
  • 政府网站建设大约多少钱海豹直播nba
  • 网站提示域名重定向怎么做seo网站权重
  • 南宁网站建设gxskm站长工具是做什么的
  • 郑州专业做网站公网站推广怎么做才有效果
  • 做毕业设计一个网站的数据来源百度网盘怎么找资源
  • c 怎么和网站做交互bt kitty磁力猫
  • 论坛类的网站怎么做seo如何优化的
  • 新乡网站推广软文推广案例500字
  • 网站建设怎么设置留言界面锦州seo推广
  • 网站建设综合实训seo快速排名软件推荐
  • 小说主角重生之后做网站快速网站
  • 免费空间已经注册 怎么做网站淘宝店铺转让价格表
  • 西安h5网站建设什么是seo优化推广
  • 开发小程序哪家好seo搜索引擎优化价格
  • 西安营销型网站电商
  • 网站建设与维护 书seo好找工作吗