问题描述
- Java程序输出星星三角形
-
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();
}
}
}
解决方案
for(int i=4;i>=0;i--;){
System.out.print("*");
}
解决方案二:
使用wait加notify加同步锁的方式实现线程协作
解决方案三:
额..... ,身为菜鸟的我,问楼主一下 Phaser 类,我咋没见过,求解释...........................................
解决方案四:
关于你提的问题,输出三角形小星星的问题,我想问一下,为什么要开四个线程才能保证程序能正常结束,并且输出三行星,如果少启一个线程,那么程序就挂起了不会结束。这个Phase类的作用是什么呢?
时间: 2024-12-30 22:11:34