未利用同步思想,会出现0,与-1的买票状态
package ThreadDemo;
/*
* 售票系统的建立
* */
public class TicketDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.创建售票对象
Ticket ticket = new Ticket();
//2.售票窗口的建立
Thread t1 = new Thread(ticket,"1窗口");
Thread t2 = new Thread(ticket,"2窗口");
Thread t3 = new Thread(ticket,"3窗口");
//3.窗口售票
t1.start();
t2.start();
t3.start();
}
}
-------------------------------Ticket线程接口,主要是implements Runnable--------------
package ThreadDemo;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/*
*多线程的售票,就相当于多个窗口售票
* */
public class Ticket implements Runnable{
//给定100张票
static int ticket = 100;
@Override
public void run() {
// TODO Auto-generated method stub
//模拟售票
while(true) {
if (ticket > 0) {
//模拟选座
try {
Thread.sleep(2);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "正在买票:" + ticket--);
}
}
}
}