/*
* 需求:火车站售票系统
* 思想:使用多线程技术与线程同步技术,没条线程代表着火车站的一个售票窗口。
* 步骤:1.定义售票窗口类,并继承于接口 Runnnable
2.重写run()函数,将每个窗口的售票任务封装到run()中
3.因为两条线程使用的共享数据有多条代码,所以使用synchronized()同步代码块解决线程安全问题。
*/
class Ticket implements Runnable
{
private int num = 100;
Object obj = new Object();
public void run(){
boolean flag = true;
while(flag){
synchronized(obj){
if(num > 0){
try
{
Thread.sleep(10);
}
catch(InterruptedException e)
{
System.out.println("interrupeted......");
}
System.out.println(Thread.currentThread().getName() + "...." + num--);
}else
flag = false;
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
System.out.println("This is Ticket System.....");
Ticket d = new Ticket();
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
t1.start();
t2.start();
}
}