java中的高级同步对象

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

虽然有volatile,final,synchronized,lock等能够简单实现,但没有更高层次的抽象,而高级同步对象则能够,下面只是简单总结了一下本身学过的,只是稍微提一下 多线程

---------------------------------------------------------- 学习

信号量:使用java.util.concurrent.semaphore类,建立对象时要指定资源的可用数,经过acquire方法以阻塞的方式获取许可,而tryacquire方法以非阻塞方式来获取,当须要释放时,使用release方法,同时semaphore类也支持同时获取和释放多个资源的许可,经过acquire法来获取许但是可被打断的,若是不但愿被打断能够使用acquireUninterruptibly方法 ui

 

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

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

相关文章
相关标签/搜索