java concurrent包的学习(转)
java concurrent包的学习(转)
http://my.oschina.net/adwangxiao/blog/110188
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完 成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防 止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以 及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担.万幸的是,在JDK1.5出现之后,Sun 大神(Doug Lea)终于为我们这些可怜的小程序员推出了java.util.concurrent工具包以简化并发完成。开发者们借助于此,将有效的减少竞争条件 (race conditions)和死锁线程。concurrent包很好的解决了这些问题,为我们提供了更实用的并发程序模型。
Executor :具体Runnable任务的执行者。
ExecutorService :一个线程池管理者,其实现类有多种,我会介绍一部分。我们能把Runnable,Callable提交到池中让其调度。
Semaphore :一个计数信号量
ReentrantLock :一个可重入的互斥锁定 Lock,功能类似synchronized,但要强大的多。
Future :是与Runnable,Callable进行交互的接口,比如一个线程执行结束后取返回的结果等等,还提供了cancel终止线程。
BlockingQueue :阻塞队列。
CompletionService : ExecutorService的扩展,可以获得线程执行结果的
CountDownLatch :一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
CyclicBarrier :一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点
Future :Future 表示异步计算的结果。
ScheduledExecutorService :一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。
定制并发类(五)在一个Executor对象中使用我们的ThreadFactory
http://ifeve.com/customizing-concurrency-classes-5/
转载于:https://www.cnblogs.com/yaowukonga/p/3488531.html
java concurrent包的学习(转)相关推荐
- java.util.concurrent包API学习笔记
newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...
- java Concurrent包学习笔记(一):ExecutorService
一.介绍 ExecutorService是java.util.concurrent包中的一个线程池实现接口.其有两个实现类: 1)ThreadPoolExecutor:普通线程池通过配置线程池大小,能 ...
- Java - concurrent包详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...
- java concurrent包介绍及使用
2019独角兽企业重金招聘Python工程师标准>>> 说一说java的concurrent包1-concurrent包简介 前面一个系列的文章都在围绕hash展开,今天准备先说下c ...
- JAVA矩阵包JAMA学习
原文链接:JAMA:Java矩阵包 API文档链接:线性代数Java包 JAMA jama是一个非常好用的java的线性代数软件包.适用于日常编程可能碰到的各种矩阵运算问题,提供了一个优雅的简便的解决 ...
- 死磕java concurrent包系列(六)基于AQS解析信号量Semaphore
Semaphore 之前分析AQS的时候,内部有两种模式,独占模式和共享模式,前面的ReentrantLock都是使用独占模式,而Semaphore同样作为一个基于AQS实现的并发组件,它是基于共享模 ...
- Java concurrent包中常用的类
1. Atomic类 基于 compareAndSwap,即CAS操作实现. CAS指令有两个步骤:冲突检测和更新操作. CAS指令需要3个操作数:内存位置(V),旧的预期值(A),新值(B).CAS ...
- 从阿里社招面试,看“野生”Java程序员的学习道路
引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...
- 【JDK源码】java.lang包常用类详解
接下来的几天开始JDK源码的学习和总结,之前看<java编程思想>的时候看到java的基础知识有很多,其中支撑着这些基础的基础中的基础当属JDK.JDK的基础代码里面又分了很多基础的模块, ...
最新文章
- TensorFlow XLA优化与Memory
- django的权限认证:登录和退出。auth模块和@login_required装饰器
- 学成在线--22.课程营销
- 计算机科学考试题目,附录A 计算机科学与技术学科综合考试人工智能真题
- cp和scp复制命令
- 韩顺平php从入门到精通讲义,传智播客_韩顺平_php从入门到精通
- 2021最新Java零基础自学教程,java从入门到精通
- JavaScript 高级程序设计(第3版)
- 斐讯k2虚拟服务器设置,斐讯K2调配设置
- php use not allowed,PHP Curl - Received HTTP/0.9 when not allowed
- 基于Android Studio开发的笔记APP
- 用python对excel进行行列操作
- python anaconda下载包_Anaconda下载 10.0.15063.0
- 已解决SyntaxError:expected ‘:‘
- 前后端分离电商B2C模式之_后台_购物车
- 解读《海贼王》—(一)
- 数字图像基本处理算法
- 画图用计算机显卡,1分钟看懂显卡显卡绘图原理!
- 熊掌号 php提交,网站接入熊掌号,网页配置并提交
- 被怼到绝望的我,Java框架体系架构的知识,超详细
热门文章
- cisco交换机Telnet配置
- EMC NetWorker备份oracle安装配置指南
- java开发环境配置环境变量_3. Java开发环境的搭建:安装JDK,配置环境变量
- 三种复位方式: 同步复位、异步复位、异步复位同步释放
- 欢迎使用CSDN-markdown编辑器1
- GoCD 19.2.0 发布,ThoughtWorks 的持续集成引擎
- CSDN开源夏令营 百度数据可视化实践 ECharts(8)
- 邁向IT專家成功之路的三十則鐵律 鐵律十七:IT人休閒之道-清心
- JSP第四课:用户注册登录设计(内置对象使用)
- linux 更改服务的启动顺序