黑马程序员技术交流社区

标题: 多线程的执行问题 [打印本页]

作者: 赵然    时间: 2013-5-31 23:36
标题: 多线程的执行问题
本帖最后由 赵然 于 2013-6-1 23:57 编辑

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

作者: 廖志强    时间: 2013-5-31 23:50
本帖最后由 廖志强 于 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,同时在强一张票,就会出问题,这时候我们就加了同步,这一百张四个对象多有机会买,就看是谁抢到了虚拟机





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