使用JDK并发包构建程序习题与实验.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用JDK并发包构建程序习题与实验

第10章 使用JDK并发包构建程序——习题与实验 目录 1. 什么是CAS? 2 2. 原子变量类的作用是什么? 2 3. BlockingQueue和一般的队列相比有什么特点? 2 4. ConcurrentMap有什么特点? 2 5. 同步器Semaphore有什么作用? 2 6. 同步器CyclicBarrier有什么作用? 3 7. 同步器CountDownLatch有什么作用? 3 8. 同步器Exchanger有什么作用? 3 9. 同步器Future有什么作用? 3 10. ReentrantLock锁如何使用? 4 11. ReentrantLock锁与Java内在锁相比有什么特点? 4 12. (分析)写出下面程序的输出结果(CountDownLatch)。 4 13. (实验)使用ReentrantLock与 Condition实现生产者和消费者问题。 5 14. (实验)使用读写锁实现缓存设计 9 什么是CAS? 答: CAS,就是Compare and Swap(比较并交换), 该操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。 类似于 CAS 的指令允许算法执行读-修改-写操作,而无需害怕其他线程同时修改变量,因为如果其他线程修改变量,那么 CAS 会检测它(并失败),算法可以对该操作重新计算。 原子变量类的作用是什么? 答: Java的原子变量类提供了“比较并设置”原语。这些原语都是使用平台上可用的最快本机结构来实现的。就是说,原子变量的操作会变为平台提供的用于并发访问的硬件原语,比如比较并交换。 原子变量类提供的改变值的方法都是原子性的。从锁转换为原子变量可以降低使用的锁的粒度,把更多的锁请求从竞争变为不竞争,竞争的操作减少,从而提高了吞吐量。 BlockingQueue和一般的队列相比有什么特点? 答: BlockingQueue是一个阻塞队列,一种带有一点扭曲的FIFO数据结构,不是立即从队列中添加或者删除元素,线程执行操作被阻塞,直到有空间或者元素可用。 也可以用于解决生产者消费者问题。 ConcurrentMap有什么特点? 答: ConcurrentHashMap 实现类只能在键不存在时将元素加入到map中,只有在键存在并映射到特定值时才能从map中删除一个元素。重要的是这些方法都是原子性的。 同步器Semaphore有什么作用? 答: Semaphore提供了一个计数信号量,从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。 Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。一般操作系统使用PV原语控制对有限资源的访问。可以用Semaphore进行模拟,P原语就相当于acquire(),V原语就相当于release()。 同步器CyclicBarrier有什么作用? 答: 在实际应用中,有时候需要多个线程同时工作以完成同一件事情,而且在完成过程中,往往会等所有线程都到达某一个阶段后再统一执行。这时候CyclicBarrier就可以派上用场。它允许一组线程互相等待,直到到达某个公共屏障点。 同步器CountDownLatch有什么作用? 答: CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的数字作为计数器初始化 CountDownLatch。一个线程调用await()方法后,在当前计数到达零之前,会一直受阻塞。其他线程调用countDown() 方法,会使计数器递减,所以,计数器的值为0后,会释放所有等待的线程。 同步器Exchanger有什么作用? 答: Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。 同步器Future有什么作用? 答: Future它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get() 方法来获取结果,如有必要,计算完成前可以阻塞此方法。 如果在主线程中需要执行比较耗时的操作时,但又不想阻塞主线程时,可以把这些作业交给Future对象在后台完成,当主线程将来需要时,就可以通过Future对象获得后台作业的计算结果或者执行状态。 ReentrantLo

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档