/** * 模拟铁人三项 */ public class PhaserTest { private static Random random = new Random(System.currentTimeMillis()); public static void main(String[] args) { Phaser phaser = new Phaser(5); for (int i = 1; i < 5; i++) { new Sportsman(i, phaser).start(); } new InjuredSportsman(5, phaser).start(); } static class InjuredSportsman extends Thread { private int no; private Phaser phaser; InjuredSportsman(int no, Phaser phaser) { this.no = no; this.phaser = phaser; } @Override public void run() { try { sport(no, phaser, " starts running ", " ends running "); sport(no, phaser, " starts bicycle ", " ends bicycle"); System.out.println("I'm injured , i will be exit"); phaser.arriveAndDeregister(); } catch (InterruptedException e) { e.printStackTrace(); } } } static class Sportsman extends Thread { private int no; private Phaser phaser; Sportsman(int no, Phaser phaser) { this.no = no; this.phaser = phaser; } @Override public void run() { try { sport(no, phaser, " starts running ", " ends running "); sport(no, phaser, " starts bicycle ", " ends bicycle"); sport(no, phaser, " starts long jump ", " ends long jump "); } catch (InterruptedException e) { e.printStackTrace(); } } } private static void sport(int no, Phaser phaser, String s, String s2) throws InterruptedException { System.out.println(no + s); Thread.sleep(random.nextInt(5000)); System.out.println(no + s2); phaser.arriveAndAwaitAdvance(); } }
Phaser铁人三项
猜你喜欢
转载自www.cnblogs.com/moris5013/p/11898956.html
今日推荐
周排行