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 基于相对时间的调度机制,而且是线程池的方式执行,不存在上述缺陷
concurrency基础的更多相关文章
- JDK1.5新特性,基础类库篇,浅谈并发工具包(Concurrency Utilities)
java.util.concurrent, java.util.concurrent.atomic, 和 java.util.concurrent.locks 包提供了高性能的.可扩展的框架,保证开发 ...
- GO_11:GO语言基础之并发concurrency
并发Concurrency 很多人都是冲着 Go 大肆宣扬的高并发而忍不住跃跃欲试,但其实从源码的解析来看,goroutine 只是由官方实现的超级“线程池”而已.不过话说回来,每个实例 4-5KB的 ...
- GO语言基础之并发concurrency
并发Concurrency 很多人都是冲着 Go 大肆宣扬的高并发而忍不住跃跃欲试,但其实从源码的解析来看,goroutine 只是由官方实现的超级“线程池”而已.不过话说回来,每个实例 4-5KB的 ...
- Java Concurrency - 线程的基础操作
创建线程 在 Java 中,创建线程有两种方式: 继承 java.lang.Thread 类,重写 run 方法. public class MyJob extends Thread { @Overr ...
- 《Java Concurrency》读书笔记,Java并发编程实践基础
1. 基本概念 程序,是一组有序的静态指令,是一种静态的概念.程序的封闭性是指程序一旦运行,其结果就只取决于程序本身:程序的再现性是指当机器在同一数据集上重复执行同一程序时,机器内部的动作系列完全相同 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Spike Notes on Lock based Concurrency Concepts
Motivation 承并发编程笔记Outline,这篇文章专注于记录学习基于锁的并发概念的过程中出现的一些知识点,为并发高层抽象做必要的准备. 尽管存在Doug Lee开山之作Concurrent ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- 第17/24周 悲观并发控制(Pessimistic Concurrency)
大家好,欢迎回到性能调优培训.今天标志着第5个月培训的开始,这个月我们会谈论SQL Server里的锁.阻塞和死锁(Locking, Blocking, and Deadlocking). SQL S ...
随机推荐
- 深度学习之TensorFlow的介绍与安装
TensorFlow是一个采用数据流图(data flow graphs)用于数值计算的开源软件库.它最初是由Google大脑小组的研发人员设计开发的,用于机器学习和神经网络方面的研究.但是这个系统的 ...
- Eclipse中Tomcat Server启动后马上又自动停止报错Address已经使用8005端口 Can't assign requested address (Bind failed)
Eclipse中Tomcat Server启动后马上又自动停止报错 Can't assign requested address (Bind failed) ,打开Tomcat Server的配置页面 ...
- 配置sql server 允许远程连接
如果要想远程连接数据库那么则需要在一个局域网中或一个路由器中才可以做到 接下来就是具体的操作检查sqlserver数据库是否允许远程连接 具体操作为 (1)打开数据库,用本地帐户登录,右击第一个选项, ...
- 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明)
系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...
- ASP.NET MVC学习(一)
这几天在学习asp.net mvc 一上来就被书中的什么依赖注入,什么单元测试搞的晕晕呼呼,根本就不理解,前天开始做书中的运动商店项目,一上来就遇到个大难题,书中的连接字符串的写法,跟以往在winfo ...
- css细节复习笔记——基本视觉格式化
css包含如此开放.如此强大的一个模型,对于这样一个模型,可以有无数种方法结合应用各种属性,可以得到的效果数不胜数. 基本框 css假定每个元素都会生成一个或多个矩形框,这称为元素框.各元素中心有一个 ...
- Cookie的创建与删除
Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法.例如,当用户访问站点时,可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问站点时,应用程序就可以检索以前保 ...
- python--生成器,生成器推导式, yield from
一.生成器 生成器的本质就是迭代器,它一个一个的创建对象. 在python中有三种方式获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的类型转换也可以获取生成器 二.生成 ...
- 报错:'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
pandas的read_csv读取一个csv表格,报错. 解决方法:用editplus打开表格,改变编码格式为utf-8,保存,重新读取,通过.
- c++实验5 顺序/链式队列
链式队列及循环队列 1.循环队列的实现(请采用模板类及模板函数实现) [实现提示] 同时可参见教材p65-p67页的ADT描述及算法实现及ppt)函数.类名称等可自定义,部分变量请加上学号后3位.也可 ...