+ All Categories
Home > Documents > Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… ·...

Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… ·...

Date post: 21-Jan-2021
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
27
Java Phaser: Key Methods Douglas C. Schmidt [email protected] www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA
Transcript
Page 1: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

Java Phaser:

Key Methods

Douglas C. [email protected]

www.dre.vanderbilt.edu/~schmidt

Institute for Software

Integrated Systems

Vanderbilt University

Nashville, Tennessee, USA

Page 2: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

2

• Understand the structure & functionality of the Java Phaser barrier synchronizer

• Recognize the key methods in the Java Phaser

Learning Objectives in this Part of the Lesson

Page 3: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

3

Key Methods in Java Phaser

Page 4: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

4

Key Methods in Java Phaser• Phaser has a more complex API than

CountDownLatch or CyclicBarrier

• i.e., it has many methods that support a range of use cases

Page 5: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

5

Key Methods in Java Phaser• Phaser has a more complex API than

CountDownLatch or CyclicBarrier

• i.e., it has many methods that support a range of use cases

Fortunately, many of these methods are rarely used in practice

Page 6: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

6

• Constructor creates a new object with an initial phase # of 0

Key Methods in Java Phaserpublic class Phaser {

...

public Phaser(int parties) {

...

}

public Phaser() { ... }

...

Page 7: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

7

• Constructor creates a new object with an initial phase # of 0

• This constructor specifies the # of parties needed to advance to the next phase

Key Methods in Java Phaserpublic class Phaser {

...

public Phaser(int parties) {

...

}

public Phaser() { ... }

...

# of registered parties dictates when a phaser can advance to the next phase

Page 8: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

8

• Constructor creates a new object with an initial phase # of 0

• This constructor specifies the # of parties needed to advance to the next phase

• This constructor is optional since parties can always register later

Key Methods in Java Phaserpublic class Phaser {

...

public Phaser(int parties) {

...

}

public Phaser() { ... }

...

With Java Phaser the # of parties need not match the # of threads

Page 9: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

9

• Constructor creates a new object with an initial phase # of 0

• This constructor specifies the # of parties needed to advance to the next phase

• This constructor doesn’t specify any parties initially

Key Methods in Java Phaserpublic class Phaser {

...

public Phaser(int parties) {

...

}

public Phaser() { ... }

...

Page 10: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

10

• Constructor creates a new object with an initial phase # of 0

• This constructor specifies the # of parties needed to advance to the next phase

• This constructor doesn’t specify any parties initially

• Any thread using a phaser created via this constructor therefore needs to register with it before using it

Key Methods in Java Phaserpublic class Phaser {

...

public Phaser(int parties) {

...

}

public Phaser() { ... }

...

Page 11: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

11

• Phaser’s key methods enable parties to register, synchronize, & terminate

Key Methods in Java Phaserpublic class Phaser {

...

public int register() { ... }

public int bulkRegister

(int parties) { ... }

public int

arriveAndAwaitAdvance()

{ ... }

public int ArriveAndDeregister()

{ ... }

protected boolean onAdvance

(int phase,

int registeredParties) {

return registeredParties == 0;

}

Page 12: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

12

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

Key Methods in Java Phaserpublic class Phaser {

...

public int register() { ... }

public int bulkRegister

(int parties) { ... }

# of registered parties dictates when a phaser can advance to the next phase

Page 13: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

13

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

public int awaitAdvance

(int phase)

{ ... }

public int

arriveAndAwaitAdvance()

{ ... }

Having multiple methods provides flexibility wrt arrival & waiting to advance

Page 14: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

14

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrives at phaser, but does not block until other parties arrive

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

Page 15: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

15

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrives at phaser, but does not block until other parties arrive

• Returns current phase # or a negative value if the phaser has already terminated

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

This method is rarely used in practice

Page 16: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

16

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrives at phaser, but does not block until other parties arrive

• Blocks until the phase of this phaser advances from the given phase value

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

public int awaitAdvance

(int phase)

{ ... }

Page 17: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

17

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrives at phaser, but does not block until other parties arrive

• Blocks until the phase of this phaser advances from the given phase value

• Returns immediately if current phase != given phase

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

public int awaitAdvance

(int phase)

{ ... }

This method is rarely used in practice

Page 18: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

18

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrives at phaser, but does not block until other parties arrive

• Blocks until the phase of this phaser advances from the given phase value

• Arrives at phaser & blocks until other parties arrive

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

public int awaitAdvance

(int phase)

{ ... }

public int

arriveAndAwaitAdvance()

{ ... }

Equivalent in effect to awaitAdvance(arrive())

Page 19: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

19

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrives at phaser, but does not block until other parties arrive

• Blocks until the phase of this phaser advances from the given phase value

• Arrives at phaser & blocks until other parties arrive

Key Methods in Java Phaserpublic class Phaser {

...

public int arrive() { ... }

public int awaitAdvance

(int phase)

{ ... }

public int

arriveAndAwaitAdvance()

{ ... }

This method is commonly used & is similar to await() on a Java CyclicBarrier

Page 20: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

20

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrive at the phaser & deregister without waiting for others to arrive

Key Methods in Java Phaserpublic class Phaser {

...

public int arriveAndDeregister()

{ ... }

Page 21: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

21

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrive at the phaser & deregister without waiting for others to arrive

• Reduces # of parties required to advance in future phases

Key Methods in Java Phaserpublic class Phaser {

...

public int arriveAndDeregister()

{ ... }

Often used by the party that controls the initialization of a Phaser

Page 22: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

22

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrive at the phaser & deregister without waiting for others to arrive

• Hook method performs an action upon pending phase advance

Key Methods in Java Phaserpublic class Phaser {

...

protected boolean onAdvance

(int phase,

int registeredParties) {

return registeredParties == 0;

}

This method is invoked upon arrival of the party advancing the phaser

All other waiting parties are “dormant” when this hook method runs

Page 23: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

23

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrive at the phaser & deregister without waiting for others to arrive

• Hook method performs an action upon pending phase advance

Key Methods in Java Phaserpublic class Phaser {

...

protected boolean onAdvance

(int phase,

int registeredParties) {

return registeredParties == 0;

}

This hook method is similar to the barrier action on a Java CyclicBarrier

Page 24: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

24

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrive at the phaser & deregister without waiting for others to arrive

• Hook method performs an action upon pending phase advance

• Also initiates termination by returning a ‘true’ Boolean value

Key Methods in Java Phaserpublic class Phaser {

...

protected boolean onAdvance

(int phase,

int registeredParties) {

return registeredParties == 0;

}

Page 25: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

25

• Phaser’s key methods enable parties to register, synchronize, & terminate

• Adds unarrived parties to phaser

• Arrive & await advance

• Arrive at the phaser & deregister without waiting for others to arrive

• Hook method performs an action upon pending phase advance

• Also initiates termination by returning a ‘true’ Boolean value

Key Methods in Java Phaserpublic class Phaser {

...

protected boolean onAdvance

(int phase,

int registeredParties) {

return registeredParties == 0;

}

Default implementation terminates the phaser if there

are no registered parties

Page 26: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

26

End of Java Phaser:Key Methods

Page 27: Java Phaser: Key Methods - Vanderbilt Universityschmidt/cs891s/2019-PDFs/10.5.2-Phaser-… · •Phaser’skey methods enable parties to register, synchronize, & terminate •Adds

27

1. What of the following are benefit of the Java Phaserover the CyclicBarrier?

a. It supports fixed-size “cyclic” & “entry” and/or “exit” barriers who # of parties match the # of threads

b. It supports variable-size “cyclic” & “entry” and/or “exit” barriers whose # of parties can vary dynamically

c. It uses the AbstractQueuedSynchronizer framework to enhance reuse

d. They provide better support for fixed-sized # of parties

Discussion Questions


Recommended