多线程卖票
前置条件:
设置总票数 ,比如1000张,这里是3线程
开启多个售票窗口同时进行火车票的售卖 (这里多个窗口代表 多线程. 代表启动了多少个线程对象)
package cn.zy;
//实现接口
public class Ticket implements Runnable{
//设置总票数
private static int count=1000;
//创建一个object
private static Object object=new Object();
@Override
public void run() {
//循环
while (true){
try {
//每1秒卖一次
Thread.sleep(1000);
//同步
synchronized (object){
//判断是否还有票
if (count>0){
System.out.println(“还剩”+count+“张票。”);
count–;
}else {
System.out.println(“已经没有票了”);
System.exit(0);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//创建对象
Ticket ticket=new Ticket();
//Runnable没有start()方法,所以要使用thread
Thread thread=new Thread(ticket);
Thread thread1=new Thread(ticket);
Thread thread2=new Thread(ticket);
thread.start();
thread1.start();
thread2.start();
}
}