A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵然 中级黑马   /  2013-5-31 23:36  /  1091 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵然 于 2013-6-1 23:57 编辑

求大神们帮忙说下多线程加锁后是怎么个执行流程  这两天看视频都看几遍了 就是看不懂 愁啊~麻烦举个例子针对一种执行结果说明下这个结果是怎么得到的就行  谢谢了{:soso_e109:}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 廖志强 于 2013-5-31 23:55 编辑

public class Ticket implements Runnable
                {
                        //定义100张票
                        private int tickets = 100;
               
                        @Override
                        public void run()
                        {
                                while(true)
                                {
                                        synchronized(this){
                                                if(tickets>0)
                                                {
                                                        try{
                                                                Thread.sleep(10);
                                                        }catch(InterruptedException e){
                                                                e.printStackTrace();
                                                        }
                                                        System.out.println(Thread.currentThread().getName()+"正在卖出第"+(tickets--)+"张票");
                                                }
                                        }
                                }
                        }
                }

                public class Test
                {
                        public static void main(String[] args)
                        {
                                Ticket t = new Ticket();

                                Thread t1 = new Thread(t,"窗口1"); //对象1
                                Thread t2 = new Thread(t,"窗口2");//对象2
                                Thread t3 = new Thread(t,"窗口3");//对象3
                                Thread t4 = new Thread(t,"窗口4");//对象4


                                
                                t1.start();
                                t2.start();
                                t3.start();
                                t4.start();
                        }
                }
其实就是对象1,对象2,对象3,对象4,同时在强一张票,就会出问题,这时候我们就加了同步,这一百张四个对象多有机会买,就看是谁抢到了虚拟机

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马