50,129
社区成员




public class StarPhaserDemo {
public static void main(String args[]) throws InterruptedException {
Phaser phsr1 = new NewlinePhaser(1, 4);
new StarThread(phsr1);
Thread.sleep(10);
Phaser phsr2 = new NewlinePhaser(1, 3);
new StarThread(phsr2);
Thread.sleep(10);
Phaser phsr3 = new NewlinePhaser(1, 2);
new StarThread(phsr3);
Thread.sleep(10);
Phaser phsr4 = new NewlinePhaser(1, 1);
new StarThread(phsr4);
Thread.sleep(10);
}
}
class NewlinePhaser extends Phaser {
int numPhases;
public NewlinePhaser(int numParties, int phases) {
super(numParties);
numPhases = phases;
}
public boolean onAdvance(int phase, int numParties) {
boolean flag = phase == numPhases - 1;
if(flag)
System.out.println(); // print a newline
return phase == numPhases - 1; // stop after numPhases
}
}
确保线程先后顺序,还是依赖Sleep了。。