CyclicBarrier

CyclicBarrier

ID:37915738

大小:48.50 KB

页数:6页

时间:2019-06-02

CyclicBarrier_第1页
CyclicBarrier_第2页
CyclicBarrier_第3页
CyclicBarrier_第4页
CyclicBarrier_第5页
资源描述:

《CyclicBarrier》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、CyclicBarrier  2010-09-3015:01:50

2、  分类: JAVA线程安全

3、字号 订阅java.util.concurrent.CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到所有到达,然后他们才可以跨越屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarr

4、ier 支持一个可选的Runnable对象参数,在一组线程中的最后一个线程到达之后执行它(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作很有用。 注意1:CyclicBarrier支持一个可选的Runnable,在一组线程中的最后一个线程到达之后(但在释放所有线程之前)执行Runnable示例用法:下面是一个在并行分解设计中使用 barrier 的例子: classSolver{  finalintN;  finalfloat[][]data;  fin

5、alCyclicBarrierbarrier;  classWorkerimplementsRunnable{   intmyRow;   Worker(introw){myRow=row;}   publicvoidrun(){    while(!done()){     processRow(myRow);     try{      barrier.await();     }catch(InterruptedExceptionex){      return;     }catch(BrokenBa

6、rrierExceptionex){      return;     }    }   }  }  publicSolver(float[][]matrix){   data=matrix;   N=matrix.length;   barrier=newCyclicBarrier(N,                 newRunnable(){                  publicvoidrun(){                   mergeRows(...);             

7、     }                 });   for(inti=0;i

8、:这个例子感觉不怎么好。done()和waitUntilDone()对阅读代码干扰很大。  如果屏障操作在执行时不依赖于正挂起的线程,则线程组中的任何线程在获得释放时都能执行该操作。为方便此操作,每次调用 await() 都将返回能到达屏障处的线程的序列号。然后,您可以选择哪个线程应该执行屏障操作,例如:if(barrier.await()==0){   //logthecompletionofthisiteration  } 注意:barrier.await() == barrier.getParties(

9、) - 1 表示是第一个到达的线程,barrier.await() == 0表示这是最后一个到达的线程,当然此时它已经跨过了屏障。 至于线程是第几个跨越障碍的线程,这个不清楚,应该和线程的调度有关。  可以参照实例1。  对于失败的同步尝试,CyclicBarrier 使用了一种要么全部要么全不 (all-or-none) 的破坏模式:如果因为中断、失败或者超时等原因,导致线程过早地离开了屏障点,那么在该屏障点等待的其他所有线程也将通过 BrokenBarrierException(如果它们几乎同时被中断,则

10、用 InterruptedException)以反常的方式离开。注意:如果因为中断、失败或者超时等原因,导致线程跨过了屏障点,那么其他线程将过BrokenBarrierException的方式跨过。(如果它们几乎同时被中断,则用 InterruptedException)Memoryconsistencyeffects:Actionsinathreadpriortocalling await() h

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。