论坛首页 Java企业应用论坛

关于并发同步对象的问题

浏览 3107 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-11-06  
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个线程,每个线程在每个阶段最多负责绘制一个星星。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics