java多线程模拟购买火车票
-
本次做的是一个火车票的售卖模拟,不管用户是在窗口还是APP上购买,必然不可能买到同一张票这也就是说一张票的售卖必然是一个线程在操作的,所以,我们在写代码是也要注意这一点
-
首先我们要进行分析 我们需要几个类来完成我们的代码 根据java面向对象编程的思想,我们可以代入现实生活中的场景
买票–>车站–>窗口–>购票
通过上述的流程我们可以大概的先分为三个类 车票类 车站类(或者系统类,统一储存票的地方)
而其中,我们知道火车站或者APP上,每个用户在任何时间都能够购票,所以买票是可以很多人一起进行的,而窗口也是如此,同样的时间,有可能5个窗口都在售票,但是窗口出票是单线程的,而售票功能则是多线程在进行的,所以我们将窗口类设置为多线程的实现类 -
类的分析完毕,开始编写代码
-
车票类-->起始站-->终点站-->价格 这是车票固有的属性
-
系统类-->统一储存的车票(可以用集合来储存)-->出票方法(从集合中减少一张票,售出)
-
窗口类-->继承Thread并重写run()方法-->售票方法(调用系统中的出票方法)
车票类
package Thread.train_tickets;
public class Ticket {
private String start;
private String end;
private Float price;
public Ticket(){
}
public Ticket(String start, String end, Float price){
this.start = start;
this.end = end;
this.price = price;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getEnd() {
return end;
}
public void setEnd