第一个线程Thread1
public class Thread1 implements Runnable {
private int ticket = 10;// 定义总共有10 张票
public void run() {
for(int i=0;i<10;i++){
System.out.println("系统正在卖票");
sellticket();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void sellticket() {
synchronized (this) {
if (this.ticket > 0) {
this.ticket--;
System.out.println("卖出一张"+"还剩余火车票数为" + this.ticket);//在这里我曾试着看看能不能打印出主函数里哪个线程卖的票,不过还没有头绪
}else{
System.out.println("对不起,火车票卖光了");
}
}
}
}
主线程Test
public class Test {
public static void main(String[] args) {
Thread1 t= new Thread1();
Thread t1=new Thread(t);//建立三个线程用于卖票
Thread t2=new Thread(t);
Thread t3=new Thread(t);
t1.start();
t2.start();
t3.start();
}
}
测试结果为:
系统正在卖票
系统正在卖票
系统正在卖票
卖出一张还剩余火车票数为9
卖出一张还剩余火车票数为8
卖出一张还剩余火车票数为7
系统正在卖票
系统正在卖票
系统正在卖票
卖出一张还剩余火车票数为6
卖出一张还剩余火车票数为5
卖出一张还剩余火车票数为4
系统正在卖票
卖出一张还剩余火车票数为3
系统正在卖票
系统正在卖票
卖出一张还剩余火车票数为2
卖出一张还剩余火车票数为1
系统正在卖票
卖出一张还剩余火车票数为0
系统正在卖票
系统正在卖票
对不起,火车票卖光了
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了
系统正在卖票
对不起,火车票卖光了