美文网首页程序员
十.任务执行接口

十.任务执行接口

作者: 蜗牛1991 | 来源:发表于2017-09-20 14:00 被阅读0次

一.线程任务接口Callable & Future&Runable

  • Callable 接口类似于 Runnable,但是 Runnable 不会返回结果,并且无法抛出经过检查的异常,而它常和future与futuretask何用得到返回值。
  • Future接口:future 表示异步计算的结果。


    image.png

二.任务执行器Executor

image.png
  • Executor接口执行已提交的任务的对象。此包中提供的 Executor实现类实现了 ExecutorService,这是一个使用更广泛的接口。ThreadPoolExecutor类提供一个可扩展的线程池实现。Executors 类为这些 Executor 提供了便捷的工厂方法。
  • ExecutorService:执行传入的任务,可返回结果future,也可关闭,具体见文档


    image.png
  • ThreadPoolExecutor
    • 构造器参数
      corePoolSize:核心池的大小。当任务来后,会创建一个线程,当线程池中的线程数目达到corePoolSize后,就会把任务放到缓存队列当中;
      maximumPoolSize:线程池最大线程数,它表示在线程池中最多能创建多少个线程;
      keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止。默认情况下,只有当线程池中的线程数大于corePoolSize时
      unit:参数keepAliveTime的时间单位,格式为TimeUnit:
      workQueue:一个阻塞队列,用来存储等待执行的任务,一般使用LinkedBlockingQueue和Synchronous。
      threadFactory:线程工厂,主要用来创建线程
    • 2.常用方法
      public void execute(Runnable command):通过这个方法可以向线程池提交一个任务,交由线程池去执行。
      public Future submit(Runnable task):它能够返回任务执行的结果。
      shutdown()和shutdownNow()是用来关闭线程池的。
      其他:getQueue() 、getPoolSize() 、getActiveCount()、getCompletedTaskCount()等获取与线程池相关属性的方法。

三.Executors

  • 创建线程池:ExecutorService pool = Executors.newFixedThreadPool(5)
ExecutorService newCachedThreadPool()
缓存线程池,无固定大小,可以根据实际应用自动的改变数量
ExecutorService newFixedThreadPool(int size)
固定大小的线程池
ExecutorService newSingleThreadExecutor()
拥有一个线程的线程池
ScheduledExecutorService newScheduledThreadPool()
获取带有线程调度

相关文章

网友评论

    本文标题:十.任务执行接口

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