Java程序输出星星三角形 5C

import java.util.concurrent.Phaser;
public class StarPhaserDemo {
public static void main(String args[]) {
Phaser phsr = new NewlinePhaser(4,3);
new StarThread(phsr);
new StarThread(phsr);
new StarThread(phsr);
new StarThread(phsr);
}
}
class NewlinePhaser extends Phaser {
int numPhases;
public NewlinePhaser(int numParties, int phases) {
super(numParties);
numPhases = phases;
}
public boolean onAdvance(int phase, int numParties) {
System.out.println(); // print a newline
return phase == numPhases-1; // stop after numPhases
}
}
class StarThread implements Runnable {
Phaser phsr;
StarThread(Phaser p) {
phsr = p;
new Thread(this).start();
}
public void run() {
while (!phsr.isTerminated()) {
System.out.print('*');
phsr.arriveAndAwaitAdvance();
}
}
}
图片说明

4个回答

for(int i=4;i>=0;i--;){
System.out.print("*");
}

使用wait加notify加同步锁的方式实现线程协作

额..... ,身为菜鸟的我,问楼主一下 Phaser 类,我咋没见过,求解释...........................................

关于你提的问题,输出三角形小星星的问题,我想问一下,为什么要开四个线程才能保证程序能正常结束,并且输出三行星,如果少启一个线程,那么程序就挂起了不会结束。这个Phase类的作用是什么呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问