java创建多线程对象模拟多个用户购票(输入用户名和购票数出票)

java创建多线程对象模拟多个用户购票(输入用户名和购票数出票)

TrainStation类(用户输入名字和要购买的票数)

public class TrainStation {
    //用户姓名
	private String name;
    //购票数
	private int ticket;
	public TrainStation() {
		super();
	}
	public TrainStation(String name,int tic) {
		super();
		this.name = name;
		this.ticket=tic;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getTicket() {
		return ticket;
	}
	public void setTicket(int ticket) {
		this.ticket = ticket;
	}
}

TrainStationThread线程类

/*
*继承Thread方法,实现Runnable接口更好
*/
public class TrainStationThread extends Thread{
    //将用户TrainStation类作为属性
	private TrainStation ts;
    //总票数为100
	public static int tickets=100;
	
	public static int getTickets() {
		return tickets;
	}

	public static void setTickets(int tickets) {
		TrainStationThread.tickets = tickets;
	}

	public TrainStationThread() {
		super();
	}

	public TrainStationThread(TrainStation ts) {
		super();
		this.ts = ts;
	}

	public void run() {
		synchronized(String.class) {//锁住每个字符串,共享的String字节码文件
			if(tickets<=0) {
				System.out.println("车票已卖完!!!");
				return;
			}
			int after=tickets-ts.getTicket();
			System.out.println(ts.getName()+"成功购买"+ts.getTicket()+"张票,"+"剩余票数为:"+after);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			this.setTickets(after);
		}
		
	}
}

测试类

public class TrainStationTest {
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
        //创建多个用户对象
		TrainStation s1=new TrainStation("张三",2);
		TrainStation s2=new TrainStation("李四",3);
		TrainStation s3=new TrainStation("王五",1);
		TrainStation s4=new TrainStation("赵六",1);
		TrainStation s5=new TrainStation("王麻子",1);
        //将对象加入到线程中;多态
		Thread t1=new TrainStationThread(s1);
		Thread t2=new TrainStationThread(s2);
		Thread t3=new TrainStationThread(s3);
		Thread t4=new TrainStationThread(s4);
		Thread t5=new TrainStationThread(s5);
        //线程启动
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();
	}

}

运行结果:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值