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

怎样写网站文案网站制作收费标准

怎样写网站文案,网站制作收费标准,素材下载解析接口网站开发,航空总医院医院网站建设招标网站目录前言1. 概念2. 线程池相关参数3. Executors的使用总结前言 线程是为了解决进程太重的问题,操作系统中进程的创建和销毁需要较多的系统资源,用了轻量级的线程来代替部分线程,但是如果线程创建和销毁的频率也开始提升到了一定程度&#xf…

目录

  • 前言
  • 1. 概念
  • 2. 线程池相关参数
  • 3. Executors的使用
  • 总结

前言

线程是为了解决进程太重的问题,操作系统中进程的创建和销毁需要较多的系统资源,用了轻量级的线程来代替部分线程,但是如果线程创建和销毁的频率也开始提升到了一定程度,系统的开销同样也不可忽视了,为了解决这种问题,我们使用了线程池进行优化。本篇文章就主要来讲讲线程池。

1. 概念

我们提前把线程创建好,放到一个”池子“里,这就构成了一个线程池,我们在申请线程时,直接从这个所谓的池子里取,用完了之后再放回去,这就是线程池的基本思想,很好的减小了创建和销毁的线程的开销。

2. 线程池相关参数

这里主要介绍一下线程池构造方法中的相关参数。
Java中提供了线程池的类:ThreadPoolExecutor,在创建这个类的实例时,有很多参数,这里来简要介绍一下:

在这里插入图片描述
官方文档中,有这四种构造方式,我们介绍第四个,其中包含了前三个的参数。
在这里插入图片描述
我们先看前两个参数:
在这里插入图片描述
第一个表示核心线程数,第二个表示总数。
在Java的线程池中,把线程分为两种:核心线程和临时线程,一创建就申请的线程是核心线程,将任务交给核心线程。若核心线程被占用满,处理不过来,就会申请一些临时的线程来进行“协助”,当空闲下来时,这些临时线程被释放,但是核心线程不会被释放。
接下来看:
在这里插入图片描述
这里第一个表示线程的存活时间,第二个表示时间单位。
通过这两个参数,来设定临时线程的存活时间。

接下来:
在这里插入图片描述
这里的参数是一个阻塞队列,存放着线程池的任务队列, 线程池就是从这个队列中取出任务,分配给其创建的线程。

继续看下一个参数:
在这里插入图片描述
这是一个线程工厂,这里的线程工厂使用了工厂设计模式,这是众多设计模式中很常见的一种,工厂模式用于弥补构造方法里存在的缺陷,比如说在创建多个构造方法的时候,如果参数的数量一致,那么参数的类型需要不同,但是实际中常常需要上述创建这种情况的构造方法,这里的参数含义不同,但是类型和数量却是一致,这样构造会编译出错。
所以为了解决这种问题,我们就引用了工厂设计模式,在这个设计模式里,我们不用构造方法来初始化对象,使用静态方法来初始化对象,即创建一个工厂类,在里面构造静态方法,来间接的达到创建对象的目的。
回到线程工厂,我们使用这个线程工厂,则是用来对线程池所创建出来的线程进行初始化的设定。

下面看最后一个参数:
在这里插入图片描述
此参数叫做拒绝策略,当线程池的任务队列满的时候,如果再次添加新任务,则会根据给出的拒绝策略来进行处理,文档提供了四种拒绝策略。
在这里插入图片描述
第一个叫做直接终止,即抛出异常,终止程序。
第二个是让调用者自己来执行任务。
第三个是丢弃队列中最老任务。
第四个是丢弃队列中最新任务。

3. Executors的使用

Executors是标准库中提供的一个线程池的简化版本,即对ThreadPoolExecutot进行了封装。
我们可以使用Executor来创建一些线程池:
在这里插入图片描述
可以看到这里有各种各样的线程池。
下面介绍四个常用的:

    public static void main(String[] args) {//固定线程数目的线程池,核心线程和最大线程数都是4ExecutorService service =  Executors.newFixedThreadPool(4);//核心线程数为0,最大线程数为Integer.MAX_VALUE的线程池ExecutorService service2 =  Executors.newCachedThreadPool();// 只有一个线程的线程池,核心线程数和最大线程数都是1ExecutorService service3 =  Executors.newSingleThreadExecutor();// “定时器”,核心线程数为0,最大线程数为10的线程池,在这个线程池的任务可以在一定时间后执行或定期执行ExecutorService service4 =  Executors.newScheduledThreadPool(10);}

一般来说我们使用最多的线程池是前两个,接下来展示如何添加任务:

        for (int i = 0; i < 100; i++) {int id = i;service.submit( new Runnable(){@Overridepublic void run() {System.out.println("线程池中的线程正在执行任务" + id);}});}

运行效果:
在这里插入图片描述

总结

以上是对线程池的一些基本介绍,希望能够让大家了解Java中线程池各参数的作用并且能够使用Executors创建常见的线程池。


文章转载自:

http://nElHOPFe.Lzqxb.cn
http://e542yPid.Lzqxb.cn
http://8OHCYysk.Lzqxb.cn
http://0Y3nY5fX.Lzqxb.cn
http://fR617iZp.Lzqxb.cn
http://jRs3zY7C.Lzqxb.cn
http://TjVyCqwS.Lzqxb.cn
http://uWi7xT4G.Lzqxb.cn
http://8X8WVjz3.Lzqxb.cn
http://RrfNDXM9.Lzqxb.cn
http://H0GLPEdL.Lzqxb.cn
http://Zo5Vn2hk.Lzqxb.cn
http://KGdHwSPM.Lzqxb.cn
http://FFt3n4KP.Lzqxb.cn
http://TiNSzBnH.Lzqxb.cn
http://XXB86cSP.Lzqxb.cn
http://M1EWlTfE.Lzqxb.cn
http://zo39VI30.Lzqxb.cn
http://2PGUFTvE.Lzqxb.cn
http://KrbnE0fE.Lzqxb.cn
http://xDChutCg.Lzqxb.cn
http://gRbe5MWB.Lzqxb.cn
http://Ebg5V4Ua.Lzqxb.cn
http://WOGodXKl.Lzqxb.cn
http://rKTKD5gm.Lzqxb.cn
http://j7d9Acer.Lzqxb.cn
http://l9hjxSVa.Lzqxb.cn
http://sKIZsTuP.Lzqxb.cn
http://6YYcjszR.Lzqxb.cn
http://vnm5dntR.Lzqxb.cn
http://www.dtcms.com/wzjs/621452.html

相关文章:

  • 青海专业网站建设推广平台建设优秀网站的必备要素
  • 网站群 seo谷德设计网入口
  • 佛山专业网站开发公司网站链接跳转如何做
  • 贵州建设职业技术学院报名网站wordpress js 被改
  • vs做网站怎么做窗体备案网站名称注意事项
  • 西安网站建设首选那家成品源码1277
  • 关于学院网站建设的意见陕西省建设厅网站首页
  • 好的宝安网站建设论文课程网站 建设背景
  • 污染网站代码网站中的图片展示功能该设计什么
  • 响应式网站无法做百度联盟哈尔滨做网站设计
  • 长春网站设计长春市土建公司
  • 挂马网站现象仙桃哪里做网站
  • 社交网站开发流程正能量网站
  • 商务网站页面设计技术重庆市建设工程招投标交易信息网
  • 山东平台网站建设平台便捷的网站建设软件
  • 久久建筑网是个什么样的网站网站和管理系统的区别
  • 做网站销售东西 需要什么资质欧美网站特点
  • 黄岩建设局台州网站建设室内设计要学哪些科目
  • 网站服务器 免费台州网络优化
  • 如何让做的网站自动适应浏览器云南住房建设厅网站
  • wordpress仿站pdf城乡建设网站职业查询系统
  • 为自己做的网站申请域名wordpress修改网站标题
  • 网页设计和网站开发哪个好给公司做网站需要华多少钱
  • 中科互联网站建设专家康复中心网站建设方案
  • 苏州吴江太湖新城建设局网站通信工程企业网站建设
  • 海南景区网站建设方案手机开发者模式在哪里找
  • 网站链接查询厦门网站建设2015
  • 火山开发软件可以开发网站吗浏览器下载视频
  • 营销型网站的建设软文广州番禺桥南做网站
  • 免费推广平台排行aso优化费用