下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Concurrent In Java2011-3-延昭&陈汝烽Concurrent In Javaconcurrentl 供的集合=ConcurrentHashMapBlockingQueue_SynchronousQueueExchangerCopyOnWriteArrayOopyQnWHteArraySet_TimeUnit2._ThreadPoolExecutorServceL.ThreadPoolExecutor_ScheduledExecutorService_Executors_ExecutorCompletionService3._java.util.concurrent.loc
2、ks3.1_Lock_&_ReentrantLock3.2_ReadWriteLock_&_ReentrantReadWriteLock4.同步辅助类4 1 CountDownlatch4 2 CyclicBarrier4 3 Semaphoreconcurr所发包,让你易于编写并发程序。并发下我们经常需要使用的基础设施和解决 的问题有ThreadPool、Lock、管道、集合点、线程之间等待和唤醒、线程间数据传输、 共享资源访问控制、并发线程之间的相互等待,等待。concurred供的工具能够解决绝大部分的场景,还能提高程序吞吐量。现代的服务器多采用多核 CPU从而不同线程之间有可能真正地在
3、同时运行而不是cpu寸间切片。在处理大计算量的程序上要尽可能利用CPU;核特性,提高系统吞吐量。并发编程主要面临三个问题:1如何让多个线程同时为同一个任务工作(并发编程设计)2多个线程之间对共享资源的争用。3多个线程之间如何相互合作、传递数据concurred是供的集合concurr向直接提供了标准集合的一些实现,在下面做简单介绍。在大部分情况下可以使用它 们提供高并发环境下对集合访问的吞吐量。ConcurrentHashMapMap勺一个并发实现。在多线程环境下,它具有很高的吞吐量和具备可靠的数据一致性。它支持 并发读和一定程度的并发修改(默认161并发,可以通过构造函数修改)。HashMa
4、p实现是非线程安全的,高并发下会ge3法常会死锁,有白时候会表现为CPIM高不下。public V get(Object key) if (key = null)return getForNullKey();int hash = hash(key.hashCode();for (Entry e = tableindexFor(hash, table.length);e != null;e = e.next) Object k;if (e.hash = hash & (k = e.key) = key | key.equals(k) return e.value; return null; 在g
5、e臊作里面for环取对象的操作,由于高并发同时读写,砧循环的结果变得不可预知,所以有可能一直循环。所以高并发环境下尽量不要直接使用HashM ap寸系统造成的影响很难排除。和 Collections.synchronizedMap(new HashMap(.C)oncurrentHashMa讲发的环境下有着更优秀的吞吐量。因为 ConcurrentHashMap持写并发,基本原理是内部分段,分 段的数量决定着并发程度。通过 concurrencyLe源可以设置。如果你能预期并发数量那么设 置该参数可以获取更优吞吐量。另外为 ConcurrentHashMOpffi了 :putIfAbsent(
6、K key, V value);boolean remove(Object key, Object value);boolean replace(K key, V oldValue, V newValue);replace(K key, V value);这四个一致性的操作方法。1.2BlockingQueueBlockingQueue了一个接口,继承了Queu接口。Queue一种数据结构,意思是它的项以先入先出(FIFO顺序存储。BlockingQueu我们提供了一些多线程阻塞语义的方法,新增和重定义了一些方法插入:抛出异常返回的布尔值阻塞超时插入add(e)offer(e)put(e)of
7、fer(e,time, unit) _移除remove()pol()take:)poll(timie, unit) _检查element()pet虫()BlockingQueu线程安全的,非常适合多个生产者和多个消费者线程之间传递数据。形象地理解,BlockingQueue有很多格子的传输带系统,不过当你(生产者)调用 pu昉法的 时候,如果有空闲的格子那么放入物体后立刻返回,如果没有空闲格子那么一直处于等待状态。ad昉法意味着如果没有空闲格子系统就会报警,然后如果处理该报警则按照你的意愿。offe方法优先于ad昉法,它通过返回tru或flaser告诉你是否放入成功。offe超时方法,如果不空
8、闲 的情况下,尝试等待一段时间。BlockingQueue多实现 ArrayBlockingQDelayQueLinkedBlockingDeque linkedBlockingQPeioeityBlockingQSynchronousQueue补充Dueue个双向队列,可以当做堆栈来使用。BlockingQueueThreadPool作为任务队列来使用,用来保存没有立刻执行的工作任务对SynchronousQueueSychronousQ最iBlockingQueUe个实现,它看起来是一个队列,但是其实没有容量,是特定条件下的一个精简实现。做个比喻,SychronousQueue就像一个接力
9、棒,现在有两个运动员交棒者和接棒者(线程) 要做交接。在交接点,交棒者没有交出之前是不能松开的(一种等待状态),接棒者在接到棒之 前是必须等待。换一句话说不管谁先到交接点,必须处于等待状态。在生产者和消费者模型中。如果生产者向SychronousQ遴ue pu臊作,直到有另外的消费者线程进行tak摭作时才能返回。对消费者也是一样,tak操作会被阻塞,直到生产者 put在这种生产者利费者模型下,生产者和消费者是进行手对手传递产品,在消费者消费一个产品之 前,生产者必须处于等待状态。它给我们提供了在线程之间交换单一元素的极轻量级方法, 并且具有阻塞语义。提示:上面举例中有写局限性。其实生产者和消费
10、者进程是可以任意数量的。M N。生产线程之间会对SychronousQueue争用,消费者也是一样。对SychronousQueue于其他语境中 会合通道或 连接点问题。它非常适合于传递性 设计,在这种设计中,在一个线程中运行的对象要将某些信息、事件或任务传递给在另 个线程中运行的对象,它就必须与该对象同步。Exchanger是SychronousQueue向实现。用来伙伴线程间交互对象。Exchange甫旨在比如遗传算法和管道设计中很有用。形象地说,就是两个人在预定的地方交互物品,任何一方没到之前都处于等待状态。CopyOnWriteArrayLoptyOnWriteArraySet它们分别是Lis腰口和Se腰口的实现。正如类名所描述的那样,当数据结构发生变化的时候,会 复制自身的内容,来 保证一致性。大家都知道复制全部副本是非常昂贵的操作,看来这是一个非常不好的实现。事实上没有最好和最差的方案,只有最合适的方案。一般情况下,处理多线程同步问题,我们倾向使用同步的ArrayList ,但同步也有其成本。那么在什么情况下使用 CopyOnWHteArrayLstCopyOnWriteArraySet 数据量小。 对数据结构的修改是偶然发生的,相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理课件制作的个性化学习
- 2025年家庭桌游收纳盒DIY教程
- 护理安全警示教育:强化团队协作防范护理风险
- 2025年极限运动直播数据分析
- 复印设备制造工道德评优考核试卷含答案
- 吸音材料制造工岗前岗中实操考核试卷含答案
- 2026年新科教版高中高一生物下册第一单元细胞呼吸过程卷含答案
- 氟化稀土制备工成果转化评优考核试卷含答案
- 电动工具制造工安全生产规范评优考核试卷含答案
- 栓剂工操作评优考核试卷含答案
- 2026四川省阿坝州州级事业单位考试调动37人重点基础提升(共500题)附带答案详解
- 2026湖北神农架林区公安局招聘辅警22人笔试参考题库及答案解析
- 2026学校规范教育收费自查整改报告
- 2026年民生银行笔试试题及答案解析
- JCT908-2013 人造石的标准
- 高中英语语法填空的解题技巧-非谓语动词优秀公开课件
- 第2章经济活动区位及影响因素分析课件
- 胰岛素的分类储存以及使用方法课件
- 移动版铁塔商务定价介绍
- 四年级美术下册 《色彩的情感》教学课件
- 多联机常用安装大样(CAD图片)
评论
0/150
提交评论