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(); } } }
运行程序后会看到下列输出:
****
****
****
现要求修改此程序:
1.要求不绘制矩形,而显示如下的星星三角形。
****
***
**
*
2.像原来程序一样使用4个线程,每个线程在每个阶段最多负责绘制一个星星。
小朋友,作业要自己写
楼主还有机会接触多线程,真幸运,我到现在都还没有机会接触这个多线程,还是自己写吧,有好处的!
还是多线程的啊