欢迎光临散文网 会员登陆 & 注册

线程同步方法买火车票的代码

2020-04-14 11:42 作者:小垃圾kiki  | 我要投稿
package cn.jd.syn;
/*
 * 快乐火车票
 */
public class Happy12306 {
    public static void main(String[] args) {
        Web12306 c=new Web12306(20,"新天地");
        new Passenger(c,"老大",2).start();
        new Passenger(c,"老二",1).start();
    }
}
//乘客
class Passenger extends Thread{
    int seats;
    
    public Passenger(Runnable target,String name,int seats) {
        super(target,name);
        this.seats=seats;
    }
}
//火车票网
class Web12306 implements Runnable{
    int  available;//可用的位置
    String name;//名称
    public Web12306(int available,String name) {
        this.available=available;
        this.name=name;
    }
    
    public void run() {
        Passenger p=(Passenger)Thread.currentThread();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            
            e.printStackTrace();
        }
        boolean flag=this.bookTickets(p.seats);
        if(flag) {
            System.out.println("出票成功"+Thread.currentThread().getName()+"-->位置为"+p.seats);
        }else {
            System.out.println("出票失败"+Thread.currentThread().getName()+"-->位置不够");
        }
        
        
    }
    
    
    //判断是否购票成功
    public synchronized boolean bookTickets(int seats) {
        System.out.println("可用位置为:"+available);
        if(seats>available) {
            return false;
        }
        available-=seats;
        return true;
        
    }
}

线程同步方法买火车票的代码的评论 (共 条)

分享到微博请遵守国家法律