62,612
社区成员
发帖
与我相关
我的任务
分享
import java.util.Random;
public class test8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TicketsBasket ticket12306 = new TicketsBasket();
Web12306 station01 = new Web12306(ticket12306, "xuhui");
Web12306 station02 = new Web12306(ticket12306, "fengxian");
Web12306 station03 = new Web12306(ticket12306, "新客站");
station01.start();
station02.start();
station03.start();
}
}
class TicketsBasket {
private int ticketNumber;// 现存车票数量
public TicketsBasket() {// 构造方法,车票初始值为20
this.ticketNumber = 20;
}
public int getTicketNumber() {
return ticketNumber;
}
public void decrease() {// 卖出一张车票,现存车票数量减一
this.ticketNumber--;
}
public synchronized void sellTicket01() {
if (ticketNumber > 0) {
// 售出车票
System.out.println(Thread.currentThread().getName() + "售出" + getTicketNumber() + "号车票。");
// 未售出车票数减1
decrease();
}
}
}
class Web12306 extends Thread {
TicketsBasket ticketsBasket = null;
/**
* @param tb
*/
public Web12306(TicketsBasket ticketsBasket, String name) {
super(name);
this.ticketsBasket = ticketsBasket;
}
@Override
public void run() {
Random random = new Random();
while (ticketsBasket.getTicketNumber() > 0) {
try {
Thread.sleep(random.nextInt(20));
ticketsBasket.sellTicket01();// 售票方法
} catch (InterruptedException e) {
}
}
}
}
public class test7 implements Runnable {
int ticket = 20;
@Override
public void run() {
// TODO Auto-generated method stub
while (ticket > 0) {
synchronized (this) {
if(ticket>0) {
System.out.println(Thread.currentThread().getName() + "售出" + (21 - ticket) + "号车票。");
ticket--;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test7 t1 = new test7();
Thread td1 = new Thread(t1, "xuhui");
Thread td2 = new Thread(t1, "fengxian");
Thread td3 = new Thread(t1, "新客站");
td1.start();
td2.start();
td3.start();
}
}