博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的高级同步对象
阅读量:5742 次
发布时间:2019-06-18

本文共 801 字,大约阅读时间需要 2 分钟。

hot3.png

最近又有针对性的学习了java中的多线程,看到了高级同步对象:信号量,倒数闸门,循环屏蔽,对象交换器

虽然有volatile,final,synchronized,lock等可以简单实现,但没有更高层次的抽象,而高级同步对象则可以,下面只是简单总结了一下自己学过的,只是稍微提一下

----------------------------------------------------------

信号量:使用java.util.concurrent.semaphore类,创建对象时要指定资源的可用数,通过acquire方法以阻塞的方式获取许可,而tryacquire方法以非阻塞方式来获取,当需要释放时,使用release方法,同时semaphore类也支持同时获取和释放多个资源的许可,通过acquire法来获取许可是可被打断的,如果不希望被打断可以使用acquireUninterruptibly方法

 

倒数闸门:使用java.util.concurrent.CountDownLatch类,,CountDownLatch就想当于多个线程等待开启的一个闸门,latch就是闸门的意思,也就是只有在某个线程完成任务之后,,闸门才会打开,等待的线程才能运行,在创建CountDownLatch对象时指定等待完成的任务数目。循环闸门是一次性的,,不能循环使用。

循环屏蔽:循环屏蔽类似于倒数闸门,,使用java.util.concurrent.CyclicBarrier来表示循环屏障,对象在创建时需要指定该对象的线程数目,如果在参与线程中有一个在等待的过程中被中断,出现超时或其他错去,整个循环屏蔽会失效,抛出java.util.concurrent.BrokenBarrierException异常

 

转载于:https://my.oschina.net/u/1013209/blog/122806

你可能感兴趣的文章
JQuery日记_5.13 Sizzle选择器(六)选择器的效率
查看>>
oracle查看经常使用的系统信息
查看>>
Django_4_视图
查看>>
Linux的netstat命令使用
查看>>
lvm讲解,磁盘故障小案例
查看>>
大快网站:如何选择正确的hadoop版本
查看>>
经过这5大阶段,你离Java程序员就不远了!
查看>>
IntelliJ IDEA 连接数据库详细过程
查看>>
thymeleaf 学习笔记-基础篇
查看>>
PHP-X开发扩展
查看>>
android学习笔记——onSaveInstanceState的使用
查看>>
工作中如何做好技术积累
查看>>
怎么用sysLinux做U盘双PE+DOS??
查看>>
Spring Transactional
查看>>
shell脚本实例
查看>>
我的友情链接
查看>>
Windows Phone 7 隔离存储空间资源管理器
查看>>
Microsoft Excel 2000/2003修复工具
查看>>
apache安装报错undefined reference ssl
查看>>
关于爱情只有一句忠告
查看>>