149.火车站订票

    科技2022-07-12  131

    采用简单的代理模式,使用同步方法达到线程安全

    package zy.thread; /* * 能选位置 */ public class happyWeb { public static void main(String[] args) { final int tickets = 2; int c1_tickets = 1; int c2_tickets = 1; web12306 c = new web12306(tickets, "黎明号"); new passanger(c, "passanger1", c1_tickets).start(); new passanger(c, "passanger2", c2_tickets).start(); } } //乘客 class passanger extends Thread{ int seat; public passanger(Runnable target, String name, int seat) { super(target, name); this.seat = seat; } } //顾客 class web12306 implements Runnable{ int avialiable; String name; public web12306(int avialiable, String name) { super(); this.avialiable = avialiable; this.name = name; } @Override public void run() { passanger p = (passanger)Thread.currentThread(); boolean flag = this.bookTickets(p.seat); if(flag) System.out.println("出票成功" + Thread.currentThread().getName() + " 订购成功:" + p.seat); else System.out.println("出票失败" + "位置不够"); } public synchronized boolean bookTickets(int seats) { System.out.println("可用位置是:" + avialiable); if(seats > avialiable) return false; avialiable -= seats; return true; } }
    Processed: 0.012, SQL: 8