首页计算机书籍计算机语言《Java并发编程:核心方法与框架》高洪岩著
haiyy

文档

370

关注

0

好评

0
PDF

《Java并发编程:核心方法与框架》高洪岩著

阅读 737 下载 0 大小 16.29M 总页数 178 页 2022-11-22 分享
价格:¥ 10.00
下载文档
/ 178
全屏查看
《Java并发编程:核心方法与框架》高洪岩著
还有 178 页未读 ,您可以 继续阅读 或 下载文档
1、本文档共计 178 页,下载后文档不带www.pdfdz.com水印,支持完整阅读内容。
2、古籍基本都为PDF扫描版,所以文档不支持编辑功能,即不支持文档内文字的复制粘贴。
3、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
4、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
5、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。
equals (Ubject obj):boolean Ubjectexchange (Object x):Object Exchangerexchange (Object x,long timeout,TimeUnit unit):Object ExchangergetClass(Class-ObjecthashCode (int -Objectnotify(void -ObjecttoString(String Objectwait:void Objectwait (long timeout):void -Objectwait (long timeout,int nanos):void Object图1-2美Exchanger中的API1.1 Sephore的使用本章将对Sephore?类中的全部方法进行案例式的实验,这样可以全面地了解此类提供了哪些核心功能。单词Sephore['semf):(r]的中文含义是信号、信号系统。此类的主要作用就是限制线程并发的数量,如果不限制线程并发的数量,则CPU的资源很快就被耗尽,每个线程执行的任务是相当缓慢,因为CPU要把时间片分配给不同的线程对象,而且上下文切换也要耗时,最终造成系统运行效率大幅降低,所以限制拼发线程的数量还是非常有必要的。在生活中也存在这种场景,比如一个生产键盘的生产商,发布了10个代理销售许可,所以最多只有10个代理商来获得其中的一个许可,这样就限制了代理商的数量,同理也限制了线程并发数的数量,这就是Sephore类要达到的目的。Sephore类发放许可的计算方式是"减法”操作。1.2 Exchanger的使用以在本节将介绍使用此类在2个线程之间传递任意数据类型的数据,Exchanger类的使用与结构相当简单,主要的学习点就是exchange()方法。1.3本章总结类Sephore的主要作用是限制并发执行的线程个数,它具有synchronized)所不具有的强大功能,比如等待获得许可的同时可以加入等待时间,还有尝试是否可以持有锁等这类扩展功能,可以说Sephore类是强有力的控制并发线程个数的解决方案之一,而Exchanger是线程间传输数据的方式之一,而且在传输的数据类型上并没有任何限制。第2章CountDownLatch和CyclicBarrier的使用在ava并发包中控制线程的同步还有一些比较常见的工具类CountDownLatch和CyclicBarrier,这两个工具类可以使线程在同步的处理上更加灵活,比如支持同步计数重置、等待同步线程个数等常见功能。景,这两个工具将同步与线程“组团”做任务完美进行了支持。2.1 CountDownLatch的使用单词Latch的发音为lxt],中文翻译是门闩,也就是有“门锁”的功能,所以当门没有打开时,N个人是不能进入屋内的,也就是N个线程是不能继续向下运行的,支持这样的特性可以控制线程执行任务的时机,使线程以“组团”的方式一起执行任务。类CountDownLatch所提供的功能是判断counti计数不为O时则当前线程呈wait状态,也就是在屏障处等待,该类的全部方法列表如图2-1所示。类CountDownLatch也是一个同步功能的辅助类,使用效果是给定一个计数,当使用这个CountDownLatch类的线程判断计数不为0时,则呈wait状态,如果为0时则继续运行。实现等待与继续运行的效果分别需要使用await()和countDown()方法来进行。调用await()方法时判断计数是否为0,如果不为0则呈等待状态。其他线程可以调用count-Down(0方法将计数减1,当计数减到为0时,呈等待的线程继续运行。而方法getCount()就是获得当前的计数个数。要说明的是,计数无法被重置,如果需要重置计数,请考虑使用Cyclic Barrier类。
返回顶部