1.介绍

在里面上一篇文章,我们开始探索引入的新功能common.clect.包裹。

在这个快速的文章中,让我们走过common.util.concurrent.包裹。

2.原子隆隆图

在并发方案中,标准Hashmap.可能无法正常工作,因为它根本不同时。在这个特定的场景中,atomiclongmap.通过储存拯救你以线程安全的方式值。

atomiclongmap.很久以前介绍了Guava 11.现在,添加了四种新方法。

2.1。AccumulateAndget()

AccumulateAndget()方法通过使用累加器功能将其与现有值合并,更新与键链接的值。然后,它返回更新值:

@test public void ancumulateandget_withlongbinaryoperator_thensccessful(){long noofstudents = 56;long oldvalue = courses.part(spring_course_key);long totalnotesrequired = courses.accumulateandget(“guava”,noofstudents,(x,y) - >(x * y));assertequals(totalnotesrequired,gollyvalue * noofstudents);}

2.2。getAndAccumulate()

此方法具有如上定义的类似功能,但它返回旧值而不是更新值(作为相同建议的操作顺序)。

2.3。updateandget()

updateandget()方法使用作为第二个参数提供的指定函数更新键的当前值。然后,它返回密钥的更新值:

@test public void updateandget_withlongunaryoperator_thensccessful(){long braftupdate = courses.get(spring_course_key);long onupdate = courses.updateandget(“guava”,(x) - >(x / 2));long derulupdate = courses.get(spring_course_key);assertequals(Onupdate,余下);assertequals(乳房,比如前/ 2);}

2.4。getAndupdate()

这种方法工作非常相似updateandget()但是,它返回键的旧值而不是更新一个。

3.监控

监视器类被视为更换雷丁锁此外,这也有点可读,更少错误。

3.1。monitor.newguard()

番石榴21,添加了一种新方法 -Newguard()- 返回一个monitor.guard.实例,用作线程可以等待的布尔条件:

公共类monitorexample {私有列表学生= new arraylist ();私有静态Final Int MAX_SIZE = 100;私人监视器监视器=新显示器();public void addtocourse(字符串项)抛出InterruptedException {monitor.guard suesterbelowcapacity = monitor.newguard(这个:: iSstudentsCapacityaptimit);Monitor.Enterwhen(学生们野蛮);尝试{学生.ADD(项目);最后{monitor.leave();public boolean isstudentscapacityuptolimit(){return subjers.size()> max_size;}}

4. Moreexecutors.

这个课程中没有添加,但是SamethReadexecutor()API已被删除。自V18.0以来已弃用此方法,并建议使用DirectExecutor()或者newdirectexecutorservice()反而。

5.转发博客

转发博客是一个已被移动的现有类common.clect.因为blockingqueue.更像是一个并发收集类型而不是标准集合。

六,结论

Guava 21不仅在尝试介绍新的实用程序以跟上Java 8的步伐,还可以改善现有模型更加有意义。

并始终如一,本文中的代码样本可用github存储库

通用底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
评论在本文上关闭!