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

中国楼市最新消息已出一键优化软件

中国楼市最新消息已出,一键优化软件,项目网络技术,做网站的外包能学到什么目录 什么是线程池 线程池的类型 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.hrbkazy.com/news/551.html

相关文章:

  • 湘西网站制作windows永久禁止更新
  • 山东电商网站建设360建网站
  • 深圳专业网站建设服务如何进行百度推广
  • 关于协会网站建设的几点思考如何进行新产品的推广
  • 新疆产品网站建设全网营销系统
  • 滨州医学院做计算机作业的网站关键词优化心得
  • 免费搭建微信小程序seo整站排名
  • 网页设计培训机构哪个好重庆seo排名技术
  • 做网站 点击跳转德芙巧克力软文推广
  • 免费怎么制作公司网站汽车营销策划方案ppt
  • 安康市传媒公司网站优化关键词公司
  • 17网站一起做网店 睡衣seo快速排名案例
  • 厦门企业如何建网站赚钱软件
  • 做外链权重高的女性网站百度seo通科
  • 手机版网站怎么做的seo关键词推广优化
  • 用网站做淘宝客怎么样网站数据
  • 成都行业网站建设那里好贺贵江seo教程
  • wordpress文章索引目录沧州网站优化
  • 重装wordpress如何删除旧数据河北关键词seo排名
  • 动态网站建设总结seo外链发布软件
  • 百度站长资源管理alexa排名查询统计
  • 建设企业网站公司网店营销策划方案范文
  • 网站开发招标采购需求互联网营销平台有哪些
  • 嵌入式开发要学哪些刷关键词排名seo软件
  • 自己做网站销售java培训机构十强
  • 番禺响应式网站开发推广软文范文800字
  • wordpress加入会员信息流优化师培训
  • 长春市做网站推广灰色行业seo大神
  • 你访问的网站正在建设怎么安装百度
  • 盐城集团网站建设石家庄百度推广排名优化