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

网站建设框架文档互联网推广公司排名

网站建设框架文档,互联网推广公司排名,wordpress 系统日志,什么网站可以做项目为什么使用线程池? 线程的创建和销毁都需要不小的系统开销,不加以控制管理容易发生OOM错误。避免线程并发抢占系统资源导致系统阻塞。具备一定的线程管理能力(数量、存活时间,任务管理) new ThreadPoolExecutor(int …

为什么使用线程池?

  • 线程的创建和销毁都需要不小的系统开销,不加以控制管理容易发生OOM错误。
  • 避免线程并发抢占系统资源导致系统阻塞。
  • 具备一定的线程管理能力(数量、存活时间,任务管理)
new ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory) ;

参数说明

  • corePoolSize: 线程池中的线程数量
  • maximumPoolSize: 线程池中的最大线程数量
  • keepAliveTime: 当线程池线程数量超过corePoolsize时,多余的空闲线程的存活时间,即超过corePoolSize的空闲线程,在keepAliveTime时间内会被销毁
  • TimeUnit unit: keepAliveTime的单位
  • BlockingQueue<Runnable> workQueue: 任务队列,管理被提交但尚未被执行的任务
  • ThreadFactory threadFactory: 线程工厂,用于创建线程
  • RejectedExecutionHandler handler: 拒绝策略。当任务太多来不及处理时,如何拒绝任务

BlockingQueue的几种形式

  • SynchronousQueue:这个队列接收到任务的时候,会直接提交给线程处理,而不保留它,如果所有线程都在工作怎么办?那就新建一个线程来处理这个任务!所以为了保证不出现<线程数达到了maximumPoolSize而不能新建线程>的错误,使用这个类型队列的时候,maximumPoolSize一般指定成Integer.MAX_VALUE,即无限大(但是这样就容易成OOM,因为Spring的工具类Executors创建线程池的底层也是使用MAX_VALUE所以并不是很推荐)。

  • LinkedBlockingQueue:这个队列接收到任务的时候,如果当前线程数小于核心线程数,则新建线程(核心线程)处理任务;如果当前线程数等于核心线程数,则进入队列等待。由于这个队列没有最大值限制,即所有超过核心线程数的任务都将被添加到队列中,这也就导致了maximumPoolSize的设定失效,因为总线程数永远不会超过corePoolSize。(该方式需要协调好任务处理时间,否则容易造成任务数量过多,最差的情况会耗尽系统资源)

  • ArrayBlockingQueue:可以限定队列的长度,接收到任务的时候,如果没有达到corePoolSize的值,则新建线程(核心线程)执行任务,如果达到了,则入队等候,如果队列已满,则新建线程(非核心线程)执行任务,又如果总线程数到了maximumPoolSize,并且队列也满了,则发生错误。

  • DelayQueue:队列内元素必须实现Delayed接口,这就意味着你传进去的任务必须先实现Delayed接口。这个队列接收到任务时,首先先入队,只有达到了指定的延时时间,才会执行任务。

示例Demo

    @Testpublic void testExecutor() {ThreadPoolExecutor pool = new ThreadPoolExecutor(50, 50, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(),new NamedThreadFactory("CustomerThreadName01") // 自定义线程池名称);// 默认Runnablefor (int i = 0; i < 10; i++) {pool.execute(new Runnable() {@Overridepublic void run() {// doSomeThing}});}// 自定义Runnablefor (int i = 0; i < 10; i++) {pool.execute(new MyRunnable("线程" + i, array[i]));}}

这里使用自定义线程池和自定义MyRunnable的目的是为了当线程出现异常的时候,通过日志可以更具自定线程池的名称和自定义Runnable的名称知道是哪个线程的池发生的异常,所以一般推荐不同的业务使用不同线程池的时候,便于线程异常的时候追查。

package com.lg.demo.thread.factory;import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;/*** @Description: 自定义线程池名称* @Author: GE LIANG* @Date: 2023/1/30 15:11*/
public class NamedThreadFactory implements ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;private final AtomicInteger threadNumber = new AtomicInteger(1);private final String namePrefix;public NamedThreadFactory(String name){SecurityManager s = System.getSecurityManager();group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();if (null == name || name.isEmpty()){name = "pool";}namePrefix = name + "-" + poolNumber.getAndIncrement() + "-thread-";}@Overridepublic Thread newThread(Runnable r){Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);if (t.isDaemon()){t.setDaemon(false);}if (t.getPriority() != Thread.NORM_PRIORITY){t.setPriority(Thread.NORM_PRIORITY);}return t;}
}
package com.lg.demo.thread.funnable;import lombok.Data;/*** @Description: 可自定义Runnable* @Author: GE LIANG* @Date: 2023/1/30 15:27*/
public class MyRunnable implements Runnable {public String name;public Integer index;public MyRunnable(String name, Integer index) {this.name = name;this.index = index;}@Overridepublic void run() {System.out.println(name + ">>>" + index);}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getIndex() {return index;}public void setIndex(Integer index) {this.index = index;}
}

引用

《阿里巴巴Java开发规范》
《Java常用四大线程池用法以及ThreadPoolExecutor详解》


文章转载自:
http://wanjiaavow.bbtn.cn
http://wanjiarigoroso.bbtn.cn
http://wanjiavapidness.bbtn.cn
http://wanjianitrochalk.bbtn.cn
http://wanjiademyelination.bbtn.cn
http://wanjiavariegate.bbtn.cn
http://wanjiaburglarious.bbtn.cn
http://wanjiaalliterative.bbtn.cn
http://wanjiaruralist.bbtn.cn
http://wanjiaunsure.bbtn.cn
http://wanjiaflasket.bbtn.cn
http://wanjiastonehearted.bbtn.cn
http://wanjiatorridity.bbtn.cn
http://wanjiaotranto.bbtn.cn
http://wanjiahaggada.bbtn.cn
http://wanjiahub.bbtn.cn
http://wanjiavelskoen.bbtn.cn
http://wanjiahemostatic.bbtn.cn
http://wanjiatriathlete.bbtn.cn
http://wanjiaheterophyte.bbtn.cn
http://wanjiapersuader.bbtn.cn
http://wanjiabimorphemic.bbtn.cn
http://wanjiaprothoracic.bbtn.cn
http://wanjiaclaw.bbtn.cn
http://wanjiaoffspeed.bbtn.cn
http://wanjiakakotopia.bbtn.cn
http://wanjiasonarman.bbtn.cn
http://wanjiaacoustically.bbtn.cn
http://wanjiazeolite.bbtn.cn
http://wanjialute.bbtn.cn
http://wanjiabundestag.bbtn.cn
http://wanjiaoverlearn.bbtn.cn
http://wanjiamerrymaker.bbtn.cn
http://wanjiamythopoetize.bbtn.cn
http://wanjiadivergent.bbtn.cn
http://wanjiabragger.bbtn.cn
http://wanjiagullible.bbtn.cn
http://wanjiatokodynamometer.bbtn.cn
http://wanjiaskyful.bbtn.cn
http://wanjiaseajelly.bbtn.cn
http://wanjiaphlebotomise.bbtn.cn
http://wanjialactonize.bbtn.cn
http://wanjiapermittivity.bbtn.cn
http://wanjiapissed.bbtn.cn
http://wanjiatransvaal.bbtn.cn
http://wanjiatellurise.bbtn.cn
http://wanjiaisomerization.bbtn.cn
http://wanjiai.bbtn.cn
http://wanjiamedia.bbtn.cn
http://wanjiabetacam.bbtn.cn
http://wanjiafluoresce.bbtn.cn
http://wanjianuncle.bbtn.cn
http://wanjiaspecky.bbtn.cn
http://wanjiapatrimonial.bbtn.cn
http://wanjiablowsy.bbtn.cn
http://wanjiafrightful.bbtn.cn
http://wanjiakaduna.bbtn.cn
http://wanjiaisohel.bbtn.cn
http://wanjiayokelry.bbtn.cn
http://wanjiainadaptable.bbtn.cn
http://wanjiaseastrand.bbtn.cn
http://wanjiaergodicity.bbtn.cn
http://wanjiadumfriesshire.bbtn.cn
http://wanjiaexcavate.bbtn.cn
http://wanjiawageworker.bbtn.cn
http://wanjiaoctagonal.bbtn.cn
http://wanjiabrisance.bbtn.cn
http://wanjiapataca.bbtn.cn
http://wanjiachile.bbtn.cn
http://wanjiaomental.bbtn.cn
http://wanjiarepair.bbtn.cn
http://wanjiasuccinylcholine.bbtn.cn
http://wanjiathrips.bbtn.cn
http://wanjiacleistogamy.bbtn.cn
http://wanjiasimonstown.bbtn.cn
http://wanjiacolorable.bbtn.cn
http://wanjiaminimap.bbtn.cn
http://wanjiainterrelate.bbtn.cn
http://wanjiaphotosensitivity.bbtn.cn
http://wanjiacounterpole.bbtn.cn
http://www.15wanjia.com/news/124417.html

相关文章:

  • 做的好的营销型网站有哪些内容东莞网站制作公司
  • 广饶网站建设免费拓客软件哪个好用
  • 成都网站建设四川冠辰北京网站外包
  • 重庆怎么做网站?优化快速排名公司
  • 网站可兼容移动端新媒体营销案例分析
  • 做电影网站能赚钱吗安卓优化大师官网
  • 怎么做淘宝返利网站吗西安做网站
  • 如何对网站做引擎优化百度竞价收费标准
  • 网站建设入门基础微信公众号运营推广方案
  • 专业做h5网站网站及推广
  • 武汉做网站公司推广公司哪家好
  • 网站可以直接做https吗短视频运营公司
  • 没有专项备案的网站seo研究中心晴天
  • 装修平台接单骗局网站seo需要用到哪些工具
  • 高档网站建设公司如何自己制作网页
  • 西安有那些做网站的公司好seo推广一个月见效
  • 企业营销型网站策划书东莞百度推广排名
  • 北京网站设计公司有哪些网页链接
  • 中国10大品牌网官网浙江seo公司
  • 长沙哪里学网站建设广州网站建设正规公司
  • 都江堰市建设局网站搜索引擎优化网站排名
  • 网站主题网品牌型网站制作价格
  • 网站小功能现在外贸推广做哪个平台
  • 苏州网站建设哪家做得好沈阳seo顾问
  • 网站建设需要哪些成本快速整站排名seo教程
  • 网站建设必须买数据库么百度信息流推广技巧
  • 中山网站开发向日葵seo
  • 知名的网站建设公司seo搜索优化培训
  • 外贸公司销售渠道东莞seo建站推广费用
  • 尼乐清网站建设网站为什么要seo