class SellTicket extends Thread //买票的功能
{
private static int sum = 10; //设定票的总数
public void run() //买票的方法
{
while (sum>0)
{
try
{
sleep(100); //设定延时
}
catch (Exception e)
{
}
System.out.println(this.getName()+"卖出的票号为"+(--sum));
}
}
}
class ThreadTest__1
{
public static void main(String[] args)
{
SellTicket aa = new SellTicket();
aa.setName("售票员一");
aa.start();
SellTicket bb = new SellTicket();
bb.setName("售票员MMMMMM");
bb.start();
}
}
/*
运行结果
=================================
售票员MMMMMM卖出的票号为9
售票员一卖出的票号为8
售票员一卖出的票号为7
售票员MMMMMM卖出的票号为7
售票员一卖出的票号为6
售票员MMMMMM卖出的票号为5
售票员一卖出的票号为4
售票员MMMMMM卖出的票号为3
售票员一卖出的票号为2
售票员MMMMMM卖出的票号为1
售票员一卖出的票号为0
售票员MMMMMM卖出的票号为-1
=================================
在这个程序中我加sleep()语句是为了让这个程序暴露安全问题(打出票号为-1的票),我知道代码该如何优化,我只是没有想明白怎么会出现两张7号票呢?
,--x和打印是在一条语句里面。为什么会出现两张7号票呢?
这个结果是随机出现的,请各位大哥分析一下执行过程,谢谢。
*/ |