黑马程序员技术交流社区
标题:
多线程卖票小程序代码分享
[打印本页]
作者:
周博文
时间:
2015-8-18 22:34
标题:
多线程卖票小程序代码分享
/*
* Ticket: 属性:编号(代表第几张票) 行为:打印票据信息(重写toString方法)
*/
public class Ticket {
private int num;
public Ticket(int num) {
this.num = num;
}
@Override
public String toString() {
return "黑马大电影:" + num + "号票";
}
}
复制代码
public class SealWindow implements Runnable {
private TicketSealCenter tickets;
public SealWindow(TicketSealCenter tickets) {
this.tickets = tickets;
}
@Override
public void run() {
while(tickets.hasTicket()) {
synchronized(tickets) {
if(!tickets.hasTicket()) {
break;
}
Ticket t = tickets.sellTicket();
System.out.println(Thread.currentThread().getName() + "卖出了 : " + t);
}
}
}
}
复制代码
import java.util.LinkedList;
/*
* TicketSealCenter:
* 售票中心应该持有所有的票对象,定义一个集合用来存储票对象,由于票不能重复,因此使用Set集合
* 属性:Set<Ticket>集合用于存储所有票的信息
* int number 定义初始的票的数量
* 在构造方法中对集合进行初始化,即对票进行编号,票的数量从外界获取
*/
public class TicketSealCenter {
private LinkedList<Ticket> tickets = new LinkedList<>();
public TicketSealCenter(int num) {
for (int i = 1; i <= num ; i++) {
tickets.add(new Ticket(i));
}
}
public Ticket sellTicket() {
return tickets.remove();
}
public boolean hasTicket() {
return !tickets.isEmpty();
}
}
复制代码
作者:
戒不掉的温柔
时间:
2015-8-18 23:06
学习了。。。。
作者:
谭威威威威
时间:
2015-8-18 23:07
作者:
阮文江
时间:
2015-8-18 23:10
顶一下,杠杠的
作者:
风华正茂
时间:
2015-8-19 12:25
谢谢楼主分享,楼主辛苦了
作者:
泽尻绘里香
时间:
2015-8-19 14:22
真是用心了
作者:
DD_vincent
时间:
2015-8-19 18:15
把Set集合放进来也是可以的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2