public class piao implements Runnable{
static int num= 30;//30张票
static Object o=new Object();
//实现接口Runnable重写run方法
@Override
public void run() {
// TODO Auto-generated method stub
//循环卖票
while (true){
try {
//休眠3秒执行一次 == 3000毫秒
Thread.sleep(3000);
//多线程加同步锁 容易并发
synchronized (o){
//当票数大于0执行卖票
if (num>0){
//输出当前线程名称 用于观察线程的使用
System.out.println(Thread.currentThread().getName()+"\t当前卖的票号为:"+num);
//票数-1
num--;
System.out.println("-------------------");
}else {
//票数卖完了,退出程序
System.out.println("卖完了。。。。。。退出程序");
//表示正常退出程序 关闭JVM虚拟机
System.exit(0);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//new当前类 启动线程
piao z1 = new piao();
Thread thread = new Thread(z1);
thread.start();
piao z2 = new piao();
Thread td = new Thread(z2);
td.start();
piao z3 = new piao();
Thread t3 = new Thread(z3);
t3.start();
}
}