美文网首页java技术
java线程之四(线程池)

java线程之四(线程池)

作者: 小可文志 | 来源:发表于2019-12-07 23:43 被阅读0次

Excutor(接口)

线程池执行器,只有一个方法excute(Runable command)

ExcutorService

继承了Excutor,并且拓展了线程池的生命周期`(shutdown结束方法,submit(Runable task T result )isShutDown等方法)

Callable

call()方法,有返回值并且可抛出异常

Future

存储将来线程执行的结果

get()方法,可获取线程池submit()方法的返回值,且是阻塞的

FutureTask

即实现了Future又实现了Task

CompletableFure

管理多个Future的结果,可以等待多个线程或某个方法同时执行完成

CompletableFure.allOf(completableFure1,completableFure2,completableFure3).join();多个线程都完成

CompletableFure.supplyAsync()

ThreadPoolExcutor

手动定义线程池ThreadPoolExcutor(corePoolSize,maximumPoolSize,keepAliveTime,TimeUnit.SECONDS ,new ArrayBlockingQueue<Runnable>(4),Excutors.defaultThreadFactory(),new ThreadPoolExcutor.discardOldestPolicy())

1.corePoolSize:核心线程数;

2.maximumPoolSize:最大线程数;

3.keepAliveTime:空闲时间

4.TimeUnit.SECONDS:时间单位

5.new ArrayBlockingQueue存放任务的队列

6.defaultThreadFactory:产生线程的方式,默认提供defaultThreadFactory

7.new ThreadPoolExcutor.discardOldestPolicy()拒绝策略,默认提供四种(也可自定义)

Excutors

线程池工厂

SingleThreadPool

只有一个线程,可以保证任务的执行顺序

为什么要有一个单线程的线程池?

任务队列 生命周期管理

CacheTreadPool

如果有空闲线程则不启动新线程,否则启动闲的线程,线程最大数为Integer最大数

弊端:不能控制线程数

FixedTreadPoll

固定线程数的线程池(核心线程=最大线程),

ScheduleTreadPool

定时器线程池,使用了DelayedWorkQueue指定间隔时间运行

一般用定时框架代替:quarts cron

WorkStealingPool

每个现场有自己单独的队列,自己的队列执行完了去别的队列拿任务

并行和并发有什么区别

并发指任务提交,不行是指任务执行

并行是并发的子集

ForJoinPool

分解汇总的任务

用很少的线程可以执行很多的任务(子任务)

ParallelStream

相关文章

  • java线程之四(线程池)

    Excutor(接口) 线程池执行器,只有一个方法excute(Runable command) ExcutorS...

  • Executors

    Java通过Executors提供四种线程池 newCachedThreadPool 创建一个可缓存线程池,如果线...

  • ThreadPoolExecutor线程池原理

    本文参考Java线程池---addWorker方法解析Java线程池ThreadPoolExecutor实现原理线...

  • 来吧!接受Kotlin 协程--线程池的7个灵魂拷问

    前言 之前有分析过协程里的线程池的原理:Kotlin 协程之线程池探索之旅(与Java线程池PK)[https:/...

  • 线程池状态介绍

    线程池类图 ps:该线程池的类图参考的是《Java 并发编程之美》。 线程池部分源码解释 如下是 ThreadPo...

  • java线程池

    Java线程池 Java通过Executor提供了4种线程池,分别为: cashedThreadPool:可缓存线...

  • java 实现自定义线程池

    java 实现自定义线程池 定义线程池接口 线程池接口的默认实现 示例摘抄于《Java并发变成的艺术》4.4.3线...

  • JAVA线程池常见用法

    JAVA线程池常见用法及其原理 1.JAVA线程池常见用法: 2.核心参数讲解 corePoolSize: 核心线...

  • JUC(11) - 线程池

    11. 线程池 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之一执行...

  • 2019-03-25——Java并发 Executor框架 Th

    ThreadPoolExecutor是Java线程池的核心类,以内部线程池的形式对外提供管理任务执行,线程调度,线...

网友评论

    本文标题:java线程之四(线程池)

    本文链接:https://www.haomeiwen.com/subject/ejmpgctx.html