⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 barrieruseexample.java

📁 介绍线程的使用方法
💻 JAVA
字号:
package thread.lock;

/**
 * <p>Title:线程之间的同步工具--屏障 </p>
 *
 * <p>Description:线程之间的同步工具--屏障。
 * 屏障就是这样的一个等待点: 一组线程在这一点被同步,这些线程合并各自的结果或者运行到整个任务的下一阶段。
 *  </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: netsky</p>
 *
 * @author wdz123@hotmail.com
 * @version 1.0
 * @see  <<Java线程>> O'reilly 中国电力出版社 ISBN 7-5083-1318-6 2003年出版
 */
public class BarrierUseExample
    extends Thread {
  private Barrier firstBarrier,secondBarrier,thirdBarrier;
  private Object processResult;
  public BarrierUseExample(Barrier b1,Barrier b2,Barrier b3)  {
    firstBarrier = b1;
    secondBarrier = b2;
    thirdBarrier = b3;

    processResult = new Object();
  }

  public void run(){
    try {
     //所有线程在这里进行第1次同步
      firstBarrier.waitForRestThread();
      //各个线程开始处理第1阶段任务
      doPhaseOne();

      //所有线程在这里进行第2次同步
      secondBarrier.waitForRestThread();

      //每一个线程开始处理第2阶段的任务
      doPhaseTwo();

      //所有线程在这里进行第3次同步
      thirdBarrier.waitForRestThread();

      //每一个线程开始处理第3阶段的任务
      doPhaseThree();


    }
    catch (Exception ex) {

    }
  }
  /***
   * 第一阶段任务处理
   * **/
  public void  doPhaseOne(){
    //processResult
    System.err.println(this.getName()+" --第一阶段任务处理... ");
  }
  /***
   * 第2阶段任务处理
   * **/
  public void  doPhaseTwo(){
    //processResult
    System.err.println(this.getName()+" --第2阶段任务处理... ");
  }

  /***
   * 第3阶段任务处理
   * **/
  public void  doPhaseThree(){
    //processResult
    System.err.println(this.getName()+" --第3阶段任务处理... ");
  }

  public static void main(String[] args) {
    //构建3个屏障对象
    Barrier [] br= new Barrier[3];
    for (int i=0;i<3;i++){
       ///有5个线程需要同步控制
       br[i] = new   Barrier(5);
       br[i].setBarrierName("屏障"+i);
    }
    //需要被处理数据

    //构建5个线程
    BarrierUseExample [] t =new BarrierUseExample[5];
    for (int i=0;i<=4;i++){
      t[i] =  new BarrierUseExample(br[0],br[1],br[2]);
      t[i].setName("thread"+i);
      t[i].start();
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -