广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java同步器中的Phasers是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-05-12分类:Java技术浏览:638


导读:相信学过Java的同学应该都知道Java同步器吧!那么问题来了,Java同步器中的Phasers是什么?接下来惠州北大青鸟老师给大家介绍一下Java同步器中的Phasers是什么。

相信学过Java的同学应该都知道Java同步器吧!那么问题来了,Java同步器中的Phasers是什么?接下来惠州北大青鸟老师给大家介绍一下Java同步器中的Phasers是什么。

Phaser提供类似于CyclicBarrier和CountDownLatch同步器的功能。它提供以下功能:

Phaser是可重复使用的。

在Phaser上同步的参与方数量可以动态更改。在循环障碍中,当创建障碍时,方的数量是固定的。

移相器具有相关的相位编号,从零开始。当所有注册方都到达移相器时,移相器进入下一个阶段,阶段编号加1。相位编号的最大值为Integer.MAX_VALUE。在其最大值之后,相位编号重新从零开始。

Phaser有终止状态。在终止状态的Phaser上调用的所有同步方法立即返回,而不等待提前。

移相器有三种类型的参与者计数:注册参与者计数,到达参与者计数和未参与方计数。

注册方数量是注册同步的方的数量。到达的当事方数目是已经到达移相器的当前阶段的各方的数目。

未携带者数量是尚未到达移动器的当前阶段的各方的数量。

当最后一方到达时,移相器前进到下一阶段。

或者,当所有注册方都到达移动器时,Phaser可以执行移相器操作。

CyclicBarrier允许您执行屏障操作,这是一个Runnable任务。

我们通过在Phaser类的onAdvance()方法中编写代码来指定移相器操作。

我们需要继承Phaser类,并覆盖onAdvance()方法以提供Phaser动作。

以下代码显示了如何表示通过在Phaser上同步启动的任务

import java.util.Random;import java.util.concurrent.Phaser;class StartTogetherTask extends Thread {  private Phaser phaser;  private String taskName;  private static Random rand = new Random();  public StartTogetherTask(String taskName, Phaser phaser) {
   this.taskName = taskName;
   this.phaser = phaser;
 }

 @Override  public void run() {
   System.out.println(taskName + ":Initializing...");    int sleepTime = rand.nextInt(5) + 1;    try {
     Thread.sleep(sleepTime * 1000);
   } catch (InterruptedException e) {
     e.printStackTrace();
   }
   System.out.println(taskName + ":Initialized...");
   phaser.arriveAndAwaitAdvance();
   System.out.println(taskName + ":Started...");
 }
}public class Main {  public static void main(String[] args) {
   Phaser phaser = new Phaser(1);    for (int i = 1; i <= 3; i++) {
     phaser.register();
     String taskName = "Task  #" + i;
     StartTogetherTask task = new StartTogetherTask(taskName, phaser);
     task.start();
   }
   phaser.arriveAndDeregister();
 }
}

上面的代码生成以下结果。

Java同步器中的Phasers.png

想了解更多关于Java的知识,联系在线客服,或者来惠州北大青鸟新方舟校区了解一下。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表