| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 338 人关注过本帖
标题:新手求助线程小问题,感谢大侠不吝赐教
只看楼主 加入收藏
我的_地盘
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-20
收藏
 问题点数:0 回复次数:2 
新手求助线程小问题,感谢大侠不吝赐教
小弟最近在自学java,在线程处遇到一卖票程序,有几处百思不得其解,望各位大侠不吝赐教,小弟谢过
class A implements Runnable
{
    public int tickets = 100;
    String str = new String("ironman");
    public void run()
    {
        
        while(true)
        {
                synchronized(str)
            {
                if(tickets>0)
                {
               
                    System.out.printf("%s线程正在卖出第%d张票\n",Thread.currentThread().getName(),tickets);
                    tickets--;
                }
               
                else
                {
                    break;
                }
            }
        }
    }
}
class TestTickets_2
{
    public static void main(String[] args)
    {
        A aa = new A();
        Thread str1 = new Thread(aa);
        str1.start();
        Thread str2 = new Thread(aa);
        str2.start();   
    }
}
问题1:为何只会有一个线程卖票,无法实现交替卖票?
问题2:若将主线程改为
class TestTickets_2
{
    public static void main(String[] args)
    {
        Thread str1 = new Thread(new A());
        str1.start();
        Thread str2 = new Thread(new A());
        str2.start();
        
    }
}
为何会出现每张票被重复卖出的现象?
搜索更多相关主题的帖子: java void public 
2012-04-11 22:18
我的_地盘
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-20
收藏
得分:0 
请大家帮帮忙,小弟不胜感激,谢谢大家
2012-04-12 20:11
我的_地盘
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-20
收藏
得分:0 
搞定了,呵呵
2012-04-12 22:53
快速回复:新手求助线程小问题,感谢大侠不吝赐教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031506 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved