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

响应式网站建设报价单网站建设产品说明书

响应式网站建设报价单,网站建设产品说明书,淘宝优惠券网站怎么做 知乎,书法网站建设线程池是一种管理和复用线程资源的机制#xff0c;它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池#xff0c;以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源#xff0c;避免了线程的频繁…线程池是一种管理和复用线程资源的机制它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源避免了线程的频繁创建和销毁所带来的开销。 线程池包含两个重要的组成部分 线程池大小指线程池中所能容纳的最大线程数。线程池大小一般根据系统的负载情况和硬件资源来设置。 工作队列用于存放等待执行的任务。当线程池中的工作线程已经全部被占用时新的任务将被加入到工作队列中等待执行。 线程池创建方式 Java中线程池的创建方式主要有以下几种 使用 ThreadPoolExecutor 类手动创建通过 ThreadPoolExecutor 类的构造函数自定义线程池的参数包括核心线程数、最大线程数、线程存活时间、任务队列等。 使用 Executors 类提供的工厂方法创建通过 Executors 类提供的一些静态工厂方法创建线程池例如 newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool 等。 使用 Spring 框架提供的 ThreadPoolTaskExecutor 类在 Spring 框架中可以通过 ThreadPoolTaskExecutor 类来创建线程池。 不同的创建方式适用于不同的场景通常可以根据实际情况选择合适的方式创建线程池。手动创建 ThreadPoolExecutor 类可以灵活地配置线程池参数但需要对线程池的各项参数有一定的了解使用 Executors 工厂方法可以快速创建线程池但可能无法满足特定的需求且容易出现内存溢出的情况而 Spring 框架提供的 ThreadPoolTaskExecutor 类则只能在 Spring 框架中使用。 线程池使用 ThreadPoolExecutor 使用 ThreadPoolExecutor 线程的创建与使用示例如下 import java.util.concurrent.*;public class ThreadPoolDemo {public static void main(String[] args) {// 创建线程池ThreadPoolExecutor executor new ThreadPoolExecutor(2, // 核心线程数5, // 最大线程数60, // 线程池中线程的空闲时间单位为秒TimeUnit.SECONDS, // 时间单位new ArrayBlockingQueue(10) // 任务队列);// 提交任务for (int i 1; i 20; i) {final int taskId i;executor.submit(() - {System.out.println(执行任务 taskId 线程名称 Thread.currentThread().getName());try {Thread.sleep(1000); // 模拟任务执行时间} catch (InterruptedException e) {e.printStackTrace();}});}// 关闭线程池executor.shutdown();} }在上面的示例中我们通过 ThreadPoolExecutor 类手动创建了一个线程池设置了线程池的核心线程数为 2最大线程数为 5线程空闲时间为 60 秒任务队列为长度为 10 的 ArrayBlockingQueue。然后我们通过 submit() 方法向线程池中提交了 20 个任务每个任务会在执行时输出自己的编号和执行线程的名称然后睡眠1秒钟模拟任务执行时间。最后我们调用 shutdown() 方法关闭线程池。 Executors 使用 import java.util.concurrent.*;public class ExecutorsDemo {public static void main(String[] args) {// 创建线程池ExecutorService executor Executors.newFixedThreadPool(5);// 提交任务for (int i 1; i 10; i) {final int taskId i;executor.submit(() - {System.out.println(执行任务 taskId 线程名称 Thread.currentThread().getName());try {Thread.sleep(1000); // 模拟任务执行时间} catch (InterruptedException e) {e.printStackTrace();}});}// 关闭线程池executor.shutdown();} }在上面的示例中我们使用了 Executors 工厂类中的 newFixedThreadPool() 方法创建了一个线程池该线程池有 5 个固定线程。然后我们通过 submit() 方法向线程池中提交了 10 个任务每个任务会在执行时输出自己的编号和执行线程的名称然后睡眠 1 秒钟模拟任务执行时间。最后我们调用 shutdown() 方法关闭线程池。值得注意的是使用 Executors 工厂类创建线程池虽然非常简单但是在实际生产环境中并不推荐因为这种方式很容易导致线程资源被耗尽从而影响系统的性能和稳定性。 ThreadPoolTaskExecutor 使用 Spring 中 ThreadPoolTaskExecutor 的使用示例如下 import java.util.concurrent.*;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;public class ThreadPoolTaskExecutorDemo {public static void main(String[] args) {// 创建线程池ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(2); // 核心线程数executor.setMaxPoolSize(5); // 最大线程数executor.setQueueCapacity(10); // 任务队列长度executor.initialize();// 提交任务for (int i 1; i 20; i) {final int taskId i;executor.submit(() - {System.out.println(执行任务 taskId 线程名称 Thread.currentThread().getName());try {Thread.sleep(1000); // 模拟任务执行时间} catch (InterruptedException e) {e.printStackTrace();}});}// 关闭线程池executor.shutdown();} }在上面的示例中我们使用了 Spring 框架中的 ThreadPoolTaskExecutor 类创建了一个线程池设置了线程池的核心线程数为 2最大线程数为 5任务队列长度为 10。然后我们通过 submit() 方法向线程池中提交了 20 个任务每个任务会在执行时输出自己的编号和执行线程的名称然后睡眠1秒钟模拟任务执行时间。最后我们调用 shutdown() 方法关闭线程池。注意在使用 Spring 框架中的 ThreadPoolTaskExecutor 类创建线程池时我们需要先调用 initialize() 方法进行初始化。 ThreadPoolTaskExecutor 底层还是通过 JDK 中提供的 ThreadPoolExecutor 类实现的。 线程池优点详解 线程池相比于线程来说它不需要频繁的创建和销毁线程线程一旦创建之后默认情况下就会一直保持在线程池中等到有任务来了再用这些已有的线程来执行任务如下图所示 优点1复用线程降低资源消耗 线程在创建时要开辟虚拟机栈、本地方法栈、程序计数器等私有线程的内存空间而销毁时又要回收这些私有空间资源如下图所示 而线程池创建了线程之后就会放在线程池中因此线程池相比于线程来说第一个优点就是可以复用线程、减低系统资源的消耗。 优点2提高响应速度 线程池是复用已有线程来执行任务的而线程是在有任务时才新建的所以相比于线程来说线程池能够更快的响应任务和执行任务。 优点3管控线程数和任务数 线程池提供了更多的管理功能这里管理功能主要体现在以下两个方面 控制最大并发数线程池可以创建固定的线程数从而避免了无限创建线程的问题。当线程创建过多时会导致系统执行变慢因为 CPU 核数是一定的、能同时处理的任务数也是一定的而线程过多时就会造成线程恶意争抢和线程频繁切换的问题从而导致程序执行变慢所以合适的线程数才是高性能运行的关键。控制任务最大数如果任务无限多而内存又不足的情况下就会导致程序执行报错而线程池可以控制最大任务数当任务超过一定数量之后就会采用拒绝策略来处理多出的任务从而保证了系统可以健康的运行。 优点4更多增强功能 线程池相比于线程来说提供了更多的功能比如定时执行和周期执行等功能。 小结 线程池是一种管理和复用线程资源的机制。相比于线程它具备四个主要优势1.复用线程降低了资源消耗2.提高响应速度3.提供了管理线程数和任务数的能力4.更多增强功能。
http://www.hkea.cn/news/14412032/

相关文章:

  • 耒阳市建设局网站企业标准网站模板
  • 百度做的网站一般在什么后台关键词如何排名在首页
  • 网站登录窗口怎么做网络品牌推广计划
  • 郑州七彩网站建设手机网站打不开被拦截怎么办
  • 河南网站建设详细流程餐饮美食网站建设需求分析
  • 网站建设人员考核seo排名优化点击软件有哪些
  • 烟台网站建设加企汇互联专业2019做什么类型网站
  • 上海闸北网站建设域名主机基地
  • 网站个人建设专业网站建设服务包括
  • 四川攀枝花网站建设装修公司合作平台的网站
  • 做微整去那个网站找好的医院wordpress注册可见插件
  • 网站建设哪家服务好百度账号出售平台
  • 佛山网站推广建设兰州网站建设100
  • 湛江做网站的有哪些制作网站开发
  • 兰州专业网站建设报价网站开发的推荐参考书
  • 站长工具推荐新东家网站建设
  • 做机械产品用什么网站wordpress插件失败
  • 网站服务器哪个好濮阳网络科技有限公司
  • 展览公司网站建设微小店网站建设官网
  • 帝国cms 网站搬家东莞竞价推广
  • 专门做金融的招聘网站河北建筑工程学院招生信息网
  • 厦门网站建设ui镇江市城市建设档案馆网站
  • 济源网站优化wordpress 带水印
  • 网站开发需要学什么技能施工企业账务处理
  • 泉州做网站优化公司wordpress开源app
  • 旅游网站模板 手机wordpress 去除rss
  • 电子商务网站开发与应用论文旅游网站设计asp
  • 策划类网站怎样做某个网站有更新的提醒
  • html网站首页广州古柏广告策划有限公司
  • linux下用python做网站网站设计模版免费下载