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

网站开发与维护考察试题如何让网站速度快

网站开发与维护考察试题,如何让网站速度快,大石桥城乡规划建设局网站,做相框的网站我们了解到因为频繁创建销毁进程的开销较大,就出现了线程,但是,又觉得频繁创建线程的开销也不小,就出现了线程池;减少每次创建、销毁线程的损耗 概念 一种并发编程的常用技术,用于管理与重用线程&#x…

我们了解到因为频繁创建销毁进程的开销较大,就出现了线程,但是,又觉得频繁创建线程的开销也不小,就出现了线程池;减少每次创建、销毁线程的损耗 

概念

一种并发编程的常用技术,用于管理与重用线程,它由线程池管理器、工作队列和线程池线程组成

线程池是在应用程序启动时创建一定数量的线程,并把它们保存在线程池中。当有任务需要执行时

在线程池中获取到一个空闲的线程,将任务分配给它执行,任务执行完后再把线程返回到线程池,以供下次使用。 

线程池的创建

 标准库中提供了线程池的创建方式 - Executors

submit(Runnable) 方法:通过 Runnable 描述一段要执行的任务,通过 submit 任务放到线程池中,此时线程池的线程就会执行 Runnable 里的任务。 

  • newFixedThreadPool:创建固定数量的线程池
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;public class ThreadDemo1 {//创建固定数量的线程池public static void main(String[] args) {ExecutorService pool= Executors.newFixedThreadPool(10);for (int i = 0; i < 10; i++) {pool.submit(new Runnable(){@Overridepublic void run() {System.out.println("Hello!");}});}pool.shutdown();}
    }
    
  • newCachedThreadPool:创建线程数目动态增长的线程池
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;public class ThreadDemo2 {public static void main(String[] args) {ExecutorService pool= Executors.newCachedThreadPool();for(int i=0;i<20;i++){//可以调整数字进行测试pool.submit(new Runnable() {@Overridepublic void run() {System.out.println("你好");}});}pool.shutdown();}}
    
  • newSingleThreadExecutor:创建只包含单个的线程池
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;public class ThreadDemo3 {public static void main(String[] args) {ExecutorService pool= Executors.newSingleThreadExecutor();for(int i=0;i<5;i++){pool.submit(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+" Hello");}});}pool.shutdown();}
    }

  • newScheduledThreadPool:设定延迟时间后执行命令,或者定期执行命令
    
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;public class ThreadDemo4 {public static void main(String[] args) {//创建一个具有5个核心线程的线程池ScheduledExecutorService pool= Executors.newScheduledThreadPool(5);pool.schedule(()->{System.out.println("hello");},3, TimeUnit.SECONDS);//提交一个任务,此任务将在三秒后执行pool.shutdown();}
    }
    

Executors 本质上是 ThreadPoolExecutor 类的封装

ThreadPoolExecutor 提供很多参数供程序员需求去选择,可以具体细化线程池的行为设定

  • int corePoolSize :核心线程的数量,也可以说是线程池至少有多少线程,线程池一创建,这些线程也随之创建,线程池销毁时,这些线程才销毁。
  • int maximumPoolSize :核心线程与非核心线程总数,非核心线程就是指任务繁忙时再创建,不繁忙就销毁。
  • long keepAliveTime :非核心线程数可空闲的最大时间,非核心线程通过此来判断什么时候该销毁了
  • TimeUnit unit :它表示时间单位,用于指定 KeepAliveTime 的 时间度量单位。
  • BlockingQueue<Runnable> workQueue :工作队列(阻塞队列)
  • ThreadFactory threadFactory :线程池创建线程时调用的工厂方法,可以生产线程并执行任务
  • RejectedExecutionHandler handler :是一种拒绝策略,当线程的工作队列已满,达到最大线程数,再进行添加时就会触发拒绝策略。

线程池的工作流程

 任务提交

新任务出现提交到线程池中

 核心线程判断

线程池首先检查当前运行的核心线程数是否小于核心线程总数;如果小于,就直接创建线程执行任务

任务队列缓存

如果当前运行的核心线程数等于所设置的核心线程总数,新任务就会放进工作队列中进行等待。

最大线程扩展

如果工作队列也满了,线程池就会检查当前运行的线程数是否小于最大线程数(核心线程与非核心线程总数),小于就创建非核心线程执行任务。

拒绝策略处理

当前运行的线程数达到了最大线程数,并且工作队列已满,在提交新任务就会执行拒绝策略;

线程存活管理

非核心线程在完成任务后会等待一段时间,如果在这段时间没有新任务给它,该线程就会销毁,释放资源,核心线程会随着线程池的创建而创建,随着线程池的关闭而销毁


文章转载自:

http://VCjW6RAK.wjxtq.cn
http://eTxUf4oh.wjxtq.cn
http://TBWe6Kov.wjxtq.cn
http://DIxW36iT.wjxtq.cn
http://UKhlGZFG.wjxtq.cn
http://EmtfeMhq.wjxtq.cn
http://VCxEfWts.wjxtq.cn
http://BKIrDk6J.wjxtq.cn
http://v8fl1s1u.wjxtq.cn
http://8XPPfTyq.wjxtq.cn
http://EANscOYi.wjxtq.cn
http://jLHdjuFz.wjxtq.cn
http://8JI80mzV.wjxtq.cn
http://xzsQ3OAO.wjxtq.cn
http://k8yph6tY.wjxtq.cn
http://LYtSfRSY.wjxtq.cn
http://eZR2wIXa.wjxtq.cn
http://o7HlO0B0.wjxtq.cn
http://0GSHwbHH.wjxtq.cn
http://GiFuemwS.wjxtq.cn
http://FRLZIKWh.wjxtq.cn
http://PwE24v4Y.wjxtq.cn
http://TZyA6XuB.wjxtq.cn
http://MJCbAbiH.wjxtq.cn
http://6Wf65SCI.wjxtq.cn
http://nnO2h69B.wjxtq.cn
http://apTSDKkv.wjxtq.cn
http://BBMQS3jV.wjxtq.cn
http://EWYTECT8.wjxtq.cn
http://FOUkUClO.wjxtq.cn
http://www.dtcms.com/wzjs/629000.html

相关文章:

  • 网站建设主管招聘弱电工程公司网站怎么做
  • 网站维护一般都是维护什么成都旅游发朋友圈的精美句子
  • 公司怎么建立自己网站南宁住房建设部网站
  • 做网站运营需要注意哪些问题福州网站关键词推广
  • 南通网站建设ntwsd三合一网站建设多少钱
  • 平面设计可以做网站网站开发后端是什么
  • 企业网站排名优化大型网站制作怎么样
  • 凡科做的网站百度收不收录制作app的网站哪个好
  • 跨境电商东莞网站建设中山做app网站公司
  • 网站建设mp4背景临淄信息网招聘
  • 内蒙古建设工程造价信息网温州seo教程
  • 网站建设易客用python语言做网站
  • 襄阳建设网站公司phpcms网站seo怎么做
  • 广州个性化网站开发买完域名后怎么搭建个人网站
  • 如何查外贸网站外链海口建网站
  • 网站建设不用虚拟主机网站建设课件
  • 网站上怎么做弹目提醒网站备案必须要幕布吗
  • 电影网站源码系统百度排名 网站标题
  • 如何建设软件下载网站机械行业网站建设制作开发方案
  • 大型网站得多少钱wordpress主题设计导航
  • 做公司网站用哪个空间好光明网站建设
  • app开发 网站开发统称wordpress 图片自动下载文件
  • 初中电脑做网站的软件广州市律师网站建设价格
  • 温州网站建设钢筋工惠州网站建设哪家好
  • 太仓网站优化自己建网站免费
  • 建设网站是什么模式WordPress免费自动采集
  • 整站seo技术广东住房和城乡建设厅官方网站
  • 域名同时做邮箱和网站jiasale wordpress 插件
  • 成都解放号网站建设网站建设需要用到那些语言
  • 网站备案重要性学敏网站建设