RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Java>列表

java第五课

来源: 作者: 时间:2007-08-25 点击:
){
            
if(tickets>0){
                System.out.println(Thread.currentThread().getName()
+" sell ticket "+tickets);
                tickets
--;
            }

        }

    }

}

编译运行:

上面的程序存在隐患:

如果在售最后一张票时,各个线程进入到if(tickets>0)语句时,时间片都到期了,则下一次执行时间片时分别打印出1,0,-1,-2,-3这样的票,显然是不正确的。

我们运行程序之所以没有出现这种情况是因为时间片很短,但是在实际中经过长期运行就可能发生上面的隐患。

然而,真正找到错误原因又是很困难的。

下面我们使用Thread类的静态方法sleep,让隐患重现:

class TicketSystem{
    
public static void main(String[] args){
        SellThread st
=new SellThread();
        
new Thread(st).start();
        
new Thread(st).start();
        
new Thread(st).start();
        
new Thread(st).start();
        
new Thread(st).start();
    }

}

上一篇:Java第四课
下一篇:java第六课
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章