• 技术文章 >java >java基础

    java executor框架的应用

    小妮浅浅小妮浅浅2021-01-11 17:58:21原创2950

    我们知道为了实现对线程池的作用,executor对线程的管理采取了一定的措施,使用接口进行操作。所以我们会发现,其实executor框架是有许多不同的接口的,它们分别在不同的执行上发挥相应的作用。下面我们就executor框架组成、框架使用图和实例为大家进行展示。

    1.executor框架组成

    (1)工作任务:Runnable/Callable 接口

    作任务就是Runnable/Callable接口的实现,可以被线程池执行

    (2)执行机制:Executor接口、ExecutorService接口、ScheduledExecutorService接口

    ThreadPoolExecutor 是最核心的线程池实现,用来执行被提交的任务

    ScheduledThreadPoolExecutor 是任务调度的线程池实现,可以在给定的延迟后运行命令,或者定期执行命令(它比Timer更灵活)

    ForkJoinPool是一个并发执行框架

    (3)异步计算的结果:Future接口

    实现Future接口的FutureTask类,代表异步计算的结果

    2.Executor框架使用图

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    /* @param corePoolSize */

    /* @param maximumPoolSize */

    /* @param keepAliveTime 线程空闲时存活的有效时长 */

    /* @param unit 时长单位 */

    /* @param unit 时长单位 */

    /* @param workQueue 等待执行的队列 */

    /* maximumPoolSize是在workQueue队列满了之后才额外创建的线程数量 */

    ThreadPoolExecutor tpe = new ThreadPoolExecutor(5, 10, 100, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));

    /* 有返回值 */

    Callable<String> callable = new Callable<String>() {

        public String call() throws Exception {

            try {

                Thread.sleep(5000);

                String a = "return String";

                return a;

            } catch (Exception e) {

                e.printStackTrace();

                return "exception";

            }

        }

    };

    Future<String> future = tpe.submit(callable);

    /* 获取返回值,这是一个同步阻塞式获取的方法 */

    future.get();

      

    /* 有返回值 */

    FutureTask<String> futureTask = new FutureTask<String>(callable);

    futureTask.run();

      

    /* 无返回值 */

    Runnable runnable = new Runnable() {

        public void run() {

            try {

                Thread.sleep(5000);

                String a = "return String";

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    };

    tpe.execute(runnable);

    以上就是java中executor框架的应用,可以看出其中不同的接口,对于线程的一些作用,这就是executor框架用法的体验,即实现对线程池的管理。

    专题推荐:java executor框架
    上一篇:java中executor是什么意思 下一篇:java中ExecutorService有几种创建方法

    相关文章推荐

    • java中对象头的用法• 对象头在java中的结构有哪几种• java threadLocal源码探究• java中executor是什么意思

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网