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

塘下网站建设wordpress调用留言板

塘下网站建设,wordpress调用留言板,公众号可以做分类信息网站吗,二级域名绑定网站目录 什么是线程池 线程池的类型 1.CachedThreadPool 2.FixedThreadPool 3.ScheduledThreadPool 4.SingleThreadPool 5.newWorkStealingPool 线程池的好处 1、线程池的重用 2、控制线程池的并发数 3、线程池可以对线程进行管理 线程池的示例 1.Client启动类 2.具体…

目录

什么是线程池

线程池的类型

1.CachedThreadPool

2.FixedThreadPool

3.ScheduledThreadPool

4.SingleThreadPool

5.newWorkStealingPool

线程池的好处

1、线程池的重用

2、控制线程池的并发数

3、线程池可以对线程进行管理

线程池的示例

 1.Client启动类

2.具体业务类:实现Runnable接口,并实现了run方法

3.执行结果


什么是线程池

        线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

 

线程池的类型

1.CachedThreadPool

        适合使用在任务量 大但耗时少的任务。

2.FixedThreadPool

        适合使用在任务量比 较固定但耗时长的任务。

3.ScheduledThreadPool

        适合使用在执行 定时任务和具体固定周期的重复任务。

4.SingleThreadPool

        适合使用在多个任务 顺序执行的场景。

5.newWorkStealingPool

        适合使用在很耗 时的任务中。

线程池的好处

1、线程池的重用

        线程的创建和销毁的开销是巨大的,而通过线程池的重用大大减少了这些不必要的开销,当然既然少了这么多消费内存的开销,其线程执行速度也是突飞猛进的提升。

2、控制线程池的并发数

        控制线程池的并发数可以有效的避免大量的线程池争夺CPU资源而造成堵塞。

3、线程池可以对线程进行管理

        线程池可以提供定时、定期、单线程、并发数控制等功能。比如通过ScheduledThreadPool线程池来执行S秒后,每隔N秒执行一次的任务。


线程池的示例

        拿NewFixedThreadPool线程池举例。newFixedThreadPool的特点是他的核心线程数和最大线程数是一致的,并且是一个固定线程数的线程池。线程池的大小一旦达到最大值后,再有新的任务提交时则放入无界阻塞队列中,等到有线程空闲时,再从队列中取出任务继续执行。

 1.Client启动类

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** @BelongsProject: demo* @BelongsPackage: com.wzl* @Author: Wuzilong* @Description: 线程池-多线程* @CreateTime: 2022-12-30 08:55* @Version: 1.0*/public class Client {public static void main(String[] args) {ExecutorService executorService= Executors.newFixedThreadPool(80);//构造CountDownLatch传入数量为10000,初始化的计数器大小为1000,与学生数量对应。List<String> number=new ArrayList<>();for (int i = 0; i < 10000; i++) {number.add( "少了" +i +"袋牛奶");}final CountDownLatch latch = new CountDownLatch(number.size());//计算1000个学生的学习数据for (int i = 0; i <number.size() ; i++) {//线程提交任务executorService.submit(new DrinkMilk(i,latch,number));}try{//使调用该方法的主线程处于等待状态,当倒数到0时主线程才执行。latch.await();} catch (InterruptedException e) {throw new RuntimeException("XXX喝牛奶多线程处理异常",e);}//关闭线程池executorService.shutdown();}
}
newFixedThreadPool(80):80指的是线程池的固定大小,根据电脑的配置情况来启动对应的线程数
new DrinkMilk(i,latch,number):将具体业务需要用到的对象或者值通过实例化对象以构造函数的形式传到具体业务类中CountDownLatch(number.size()):等子线程都执行完毕之后,主线程才继续执行。传入的参数要和执行的线程是一致的

2.具体业务类:实现Runnable接口,并实现了run方法

import java.util.List;
import java.util.concurrent.CountDownLatch;/*** @BelongsProject: demo* @BelongsPackage: com.wzl* @Author: Wuzilong* @Description: 具体业务类* @CreateTime: 2022-12-30 08:55* @Version: 1.0*/public class DrinkMilk implements Runnable {int drinkMilkNumber;CountDownLatch latch;List<String> number;public DrinkMilk(int drinkMilkNumber, CountDownLatch latch, List<String> number) {this.drinkMilkNumber=drinkMilkNumber;this.latch=latch;this.number=number;}@Overridepublic void run() {this.business();latch.countDown();}private void business(){System.out.println("XXX喝了"+drinkMilkNumber+"袋牛奶!"+Thread.currentThread().getName());}}

3.执行结果

 

http://www.hyszgw.com/news/46319.html

相关文章:

  • 做百度移动网站点击论文关键词
  • o2o网站线上wordpress调用所有栏目
  • python和php网站开发企业推广语句
  • 网站分站原理可以直接进入网站的正能量没封的
  • 化妆品网站源码asp整站排名优化教程
  • flashfxp怎么上传对应网站空间hishop网站搬家
  • 如何用凡科网建立一个网站达州建设网站
  • jsp 淘宝网站验证码 设计南孚电池网站建设
  • 公司网站建设基本流程图广州娱乐场所最新通知
  • 动画素材网站长沙中小企业有哪些公司
  • 网站怎么怎么做关键字wordpress响应式修改
  • 淄博英文网站建设z怎么建设视频网站
  • 郑州上市企业网站建设永久免费企业建站官网大全
  • 外国人在中国做视频网站贵阳做网站的公司
  • 海阳玖网站建设怎么做公司网站推广
  • php 做网站 python百度广告大全
  • 高校对网站建设的重视莆田网站制作软件
  • 河池网站制作公司有多少个购物网站
  • 针对网站开发软件 代替手动公章在线制作网站做不了
  • 如何开展网站建设高端外贸网站制作
  • 山东济铁工程建设集团有限公司网站百度推广是必须先做网站吗
  • 文学类网站模板公司企业信息查询
  • 易企网站建设公司推广咨询服务公司
  • 手机网站 微信网站 区别中国优秀网站建设官网
  • wordpress站点图标各大网站收录入口
  • 杭州网站制作模板网页制作教程教案
  • 能用VUE做网站wordpress主题分为多章节
  • 企业展厅设计公司的资质是什么北京网站优化wyhseo
  • 科技公司 网站设计经典案例新潮远网站建设
  • go 做视频网站昆明建设