java之线程池解析

    xiaoxiao2021-04-18  71

    一、Executor框架

    Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为:

    并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Executor.execute(Runnalbe)。Executor在执行时使用内部的线程池完成操作。

    二、创建线程池

    2.1、Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService接口。

    2.1.1、创建固定数目线程的线程池。

    public static ExecutorService newFixedThreadPool(int nThreads)

    2.1.2创建一个可缓存的线程池,调用execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。

    public static ExecutorService newCachedThreadPool()

    2.1.3、创建一个单线程化的Executor。

    public static ExecutorService newSingleThreadExecutor()

    2.1.4、创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer类。

    public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)

    使用newFixedThreadPool(int intThreads)方法创建一个ExecutorService, 创建可以容纳10个线程任务

    ExecutorService executorService = Executors.newFixedThreadPool(10);

    向execute(Runnable runnable)方法中传递一个异步的Runnable对象, ExecutorService 中某个线程会执行这个runnable线程

    executorService.execute(new Runnable() { public void run() { System.out.println("Asynchronous task"); } }); executorService.shutdown();

    任务的委托(Task Delegation)

    创建线程池

    ExecutorService executorService1 = Executors.newSingleThreadExecutor(); ExecutorService executorService2 = Executors.newFixedThreadPool(10); ExecutorService executorService3 = Executors.newScheduledThreadPool(10);
    转载请注明原文地址: https://ju.6miu.com/read-675360.html

    最新回复(0)