黑马程序员技术交流社区

标题: 昨天晚上做入学测试的一个题目,关于多线程访问的安全... [打印本页]

作者: zhouyunfang    时间: 2014-11-27 09:42
标题: 昨天晚上做入学测试的一个题目,关于多线程访问的安全...
昨晚做的模拟一个多线程方法同一个方法,出现的多线程访问的安全问题,每次运行的结果都无法确定。
这个应该可以说明多线程访问的问题了吧。想到12306他们做的系统,瞬间的访问量那么大,真的是大牛呀。
希望我们一起学习,共同进步。
public class Test8{
        public static void main(String[] args) {
                TicketSealCenter center = new TicketSealCenter();
                Thread t1 = new SealWindow(center);
                Thread t2 = new SealWindow(center);
                Thread t3 = new SealWindow(center);
                t1.start();
                t2.start();
                t3.start();
        }
       
}
class SealWindow  extends Thread{
        private TicketSealCenter center;
        public SealWindow(TicketSealCenter center){
                this.center = center;
        }
        public void run(){
                center.getTicket();
        }
}

class TicketSealCenter{
        int count = 2;
        public int getTicket(){
                if(count == 0){
                        System.out.println("没有票了");
                        return 0;
                }else{
                        System.out.println("买到啦");
                        return count--;
                }
               
               
        }
       
}
作者: 高昌德    时间: 2014-11-27 11:41
没什么不用锁,,,
作者: play1369    时间: 2014-11-27 17:42
操作资源没同步
作者: 夏至落叶    时间: 2014-11-27 19:31
我们还没学到多线程呢,不过看起来还不错的样子
作者: 青鱼    时间: 2014-11-27 22:24
当多个线程同时执行到 count-- 的时候, 就会出现 -1, -2 , 或者 没有票之后是买到了
作者: mmppp    时间: 2014-11-28 14:53
感觉还是要加同步吧,不然后面会出现负数的票的额。。。。

作者: jcde2014    时间: 2014-11-28 15:07
去实现Runnable接口吧,骚年!
作者: as604049322    时间: 2014-11-28 15:29
你的方法太容易出问题了。。。重看多线程安全吧
作者: 陈国华    时间: 2014-11-28 16:11
我觉得12306的访问压力没有双11的天猫和京东大,双11购物毫无压力啊:lol
作者: wf111sxwf    时间: 2014-11-30 11:43
大家看清题目 人家题目就是让你模拟一个多线程出现的安全问题  同步了还怎么模拟问题啊  兄弟们~
作者: 斷灬dian    时间: 2015-1-4 21:42
楼主加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2