美文网首页
Java基础-线程-ExecutorCompletionServ

Java基础-线程-ExecutorCompletionServ

作者: 16325 | 来源:发表于2020-02-28 13:29 被阅读0次

ExecutorCompletionService

CompletionService 方法,分别如下:

Future submit(Callable task);
submit 用于提交一个 Callable 对象,用于提交一个可以获得结果的线程任务

Future submit(Runnable task, V result);
submit 用于提交一个 Runnable 对象及 result 对象,类似于上面的 submit,但是 runnable 的返回值 void 无法获得线程的结果,所以添加了 result 用于做为参数的桥梁

Future take() throws InterruptedException;
take 用于取出最新的线程执行结果,注意这里是阻塞的

Future poll();
take 用于取出最新的线程执行结果,是非阻塞的,如果没有结果就返回 null

Future poll(long timeout, TimeUnit unit) throws InterruptedException;
同上,只是加了一个超时时间

另外,CompletionService 是接口,无法直接使用,通常使用他的实现类 ExecutorCompletionService
可能看到这里会很好奇 ExecutorCompletionService 实现原理,其实原理很简单,他在内部维护了一个阻塞队列,提交的任务,先执行完的先进入队列,所以你通过 poll 或 take 获得的肯定是最先执行完的任务结果。

用处:多个线程,先执行完的进阻塞队列,然后可以按执行顺序获取结果

相关文章

  • Java基础-线程-ExecutorCompletionServ

    ExecutorCompletionService CompletionService 方法,分别如下: Futu...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • Android中的多线程

    1. Java多线程基础 Java多线程,线程同步,线程通讯 2. Android常用线程 HandlerThre...

  • Java基础

    Java基础 集合基础 集合框架 多线程基础 多线程框架 反射 代理 集合基础 ArrayList LinkedL...

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • Java并发编程——ExecutorCompletionServ

    一、简介 在JDK并发包中有这么一个类ExecutorCompletionService,提交任务后,可以按任务返...

  • java线程入门基础(二)

    java线程入门基础(二) 一、认识Java里的线程 1.1 Java里的程序天生就是多线程的 一个Java程序从...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

网友评论

      本文标题:Java基础-线程-ExecutorCompletionServ

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