zoukankan      html  css  js  c++  java
  • concurrency基础

    Runnable 一个执行任务,没有返回值,也不能抛出受检查异常

    Callable 一个执行任务有返回值,也能抛出受检查异常

    Future 表示执行任务的生命周期,任务的生命周期为:创建,提交,开始,完成。实现类:FutureTask

    Executor 只有一个 void execute(Runnable command) 方法,没有对其自身生命周期的方法

    ExecutorService 扩展了Executor,并加入了对线程池(ExecutorService本身)生命周期的管理,ExecutorService的生命周期有3种状态:运行,关闭和已终止。其submit方法可以返回执行任务的Future。实现类:ThreadPoolExecutor

    CompletionService 融合了Executor和BlockingQueue的功能,使用Executor执行任务,任务执行完成后把该任务的计算结果放到BlockingQueue中,可以调用take或poll方法获取BlockingQueue中的结果

    Timer 类执行定时任务时只会创建一个线程,有以下缺点:

    1. 当某个TimerTask执行时间较长时(假设超过了几个执行周期),后面的TimerTask有可能快速连续调用几次(由前面超过的几个执行周期决定),或者被抛弃不再调用(取决于固定速率和固定延时)

    2. Timer不捕获异常,当某个TimerTask抛出未检查异常时,整个Timer将被取消

    另外,Timer支持基于绝对时间而不是相对时间的调度机制,因此对系统时钟比较敏感

    ScheduledThreadPoolExecutor 基于相对时间的调度机制,而且是线程池的方式执行,不存在上述缺陷

  • 相关阅读:
    Geometry
    后缀数组dc3算法模版(待补)
    CodeForces 467D(267Div2-D)Fedor and Essay (排序+dfs)
    HDU 3572 Task Schedule (最大流)
    Acdream手速赛7
    hdu2732 Leapin' Lizards (网络流dinic)
    HDU 3549 Flow Problem (最大流ISAP)
    HDU 1532 Drainage Ditches (网络流)
    [容易]合并排序数组 II
    [容易]搜索插入位置
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/6395946.html
Copyright © 2011-2022 走看看