📄 buyerlockticket.java
字号:
class Ticket
{
final int MAX = 300;
private int value=MAX; //当前可售票数
void resetData(int count){ //刷新数据库
value = value - count; //可售票数减去已售票数
}
void getTicket(int count){ //买票,返回票号
int no = 0;
if(value<=0){
System.out.println("票已售完");
}
else{
if(count>value){
System.out.println("最多可购买票" + value + "张 票号: ");
for(int i=0; i<value; i++){ //输出要买的票号
System.out.print("\t" + (1000 + value - i));
}
}
else{
System.out.println("买票" + count + "张 票号:");
for(int i=0; i<count; i++){//输出要买的票号
System.out.print("\t" + (1000+value-i));
}
}
}
}
int howmuch(){ //得到当前可售票数
return value;
}
}
public class BuyerLockTicket extends Thread //买票
{
private Ticket t;
private int count; //已售票数
int no;
public BuyerLockTicket(Ticket t, int count){
this.t = t;
this.count = count;
}
public void run(){
synchronized(t){ //对象互斥锁,锁定帐户对象
System.out.print("\n现有" + t.howmuch() + "张 ");
t.getTicket(count); //实现买票
try{
sleep(10); //休眠10mm,
}catch(InterruptedException e){
System.out.println(e);
}
t.resetData(count); //刷新数据库,这步非常重要
}
}
public static void main(String []args){
Ticket t1 = new Ticket();
(new BuyerLockTicket(t1,3)).start(); //启动线程
(new BuyerLockTicket(t1,5)).start();
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -