zoukankan      html  css  js  c++  java
  • Java线程池的实现与应用

    线程池所涉及的基本应用场景:

    图 转自:https://juejin.im/entry/59aeaafd51882538cb1ec2f8

    从这个应用场景中,基本会涉及到:

    • 线程、线程池相关的接口、类和方法
    • 相关的数据结构---> 主要是同步的数据结构,例如linkedBlockingQueue|ConcurrentLinkedQueue等

    Java 多线程相关的接口、类继承关系:

     

    说明:

    • Executor 执行器接口,该接口定义执行Runnable任务的方式。
    • ExecutorService 该接口定义提供对Executor的服务。
    • ScheduledExecutorService 定时调度接口。
    • AbstractExecutorService 执行框架抽象类。
    • ThreadPoolExecutor JDK中线程池的具体实现。
    • Executors 线程池工厂类。------>工厂设计模式
    ExecutorService executor = Executors.newSingleThreadExecutor();
    executor.submit(() -> {
        String threadName = Thread.currentThread().getName();
        System.out.println("Hello " + threadName);
    });

    Callable<Integer> task = () -> {
        try {
            TimeUnit.SECONDS.sleep(1);
            return 123;
        }
        catch (InterruptedException e) {
            throw new IllegalStateException("task interrupted", e);
        }
    };
    ExecutorService executor = Executors.newFixedThreadPool(1);
    Future<Integer> future = executor.submit(task);
    
    System.out.println("future done? " + future.isDone());
    
    Integer result = future.get();
    
    System.out.println("future done? " + future.isDone());
    System.out.print("result: " + result);

    Spring 中的多线程处理方案:

    在Spring中,通过任务执行器,也就是TaskExecutor来实现多线程和并发编程。使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor。 

     

    •  构建线程池

         

    •  定义一个可运行的任务

        

    • 分配给线程池执行

         

    与多线程相关的线程池:

    真实案例:

    North 52 SES中对于对线程方案的处理:

    Reference:

    Java 8 Concurrency Tutorial: Threads and Executors: http://winterbe.com/posts/2015/04/07/java8-concurrency-tutorial-thread-executor-examples/

    Future 模式: https://openhome.cc/Gossip/DesignPattern/FuturePattern.htm

    深度解读 java 线程池设计思想及源码实现: https://juejin.im/entry/59aeaafd51882538cb1ec2f8

  • 相关阅读:
    Vue
    Vue
    Vue
    Vue
    Vue
    kubernetes
    kubernetes
    kubernetes
    django源码bug解决方案
    UNI-APP 桌面LOGO角标设置(ios)
  • 原文地址:https://www.cnblogs.com/chp008/p/7923038.html
Copyright © 2011-2022 走看看