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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


                        public class Demo2_Synchronized {

                                /**
                                 * @param args
                                 * 需求:铁路售票,一共100张,通过四个窗口卖完.
                                 */
                                public static void main(String[] args) {
                                        TicketsSeller t1 = new TicketsSeller();
                                        TicketsSeller t2 = new TicketsSeller();
                                        TicketsSeller t3 = new TicketsSeller();
                                        TicketsSeller t4 = new TicketsSeller();
                                       
                                        t1.setName("窗口1");
                                        t2.setName("窗口2");
                                        t3.setName("窗口3");
                                        t4.setName("窗口4");
                                        t1.start();
                                        t2.start();
                                        t3.start();
                                        t4.start();
                                }
                       
                        }
                       
                        class TicketsSeller extends Thread {
                                private static int tickets = 100;
                                static Object obj = new Object();
                                public TicketsSeller() {
                                        super();
                                       
                                }
                                public TicketsSeller(String name) {
                                        super(name);
                                }
                                public void run() {
                                        while(true) {
                                                synchronized(obj) {
                                                        if(tickets <= 0)
                                                                break;
                                                        try {
                                                                Thread.sleep(10);//线程1睡,线程2睡,线程3睡,线程4睡
                                                        } catch (InterruptedException e) {
                                                               
                                                                e.printStackTrace();
                                                        }
                                                        System.out.println(getName() + "...这是第" + tickets-- + "号票");
                                                }
                                        }
                                }
                        }

评分

参与人数 3黑马币 +9 收起 理由
niwota + 2 赞一个!
ninini + 4 神马都是浮云
wowowo + 3 很给力!

查看全部评分

11 个回复

倒序浏览
这里所说的不一样并不是说,线程执行的先后,是说我的电脑就一个线程把整个代码执行完了.别的线程没执行.而其他同学的却是有交替的

点评

多线程这个算是比较简单的了,哈哈  发表于 2016-6-2 01:00

评分

参与人数 1黑马币 +5 收起 理由
641846178 + 5 神马都是浮云

查看全部评分

回复 使用道具 举报 1 0
代码都是一样的完全没更改,很好奇这是为什么
回复 使用道具 举报
是一直都是么????只有一个线程执行???
回复 使用道具 举报
有点意思,是电脑cpu的问题吗?
回复 使用道具 举报
确实很奇怪。。
回复 使用道具 举报
还没学到、、、路过学习
回复 使用道具 举报
确实有待研究,我试了一下,只有两个线程
回复 使用道具 举报
你把睡眠时间该长一点试试应该就没问题了,我认为是CPU的问题
回复 使用道具 举报
android_vae 发表于 2016-6-2 10:30
你把睡眠时间该长一点试试应该就没问题了,我认为是CPU的问题

我的也出现这种情况了.不知道为什么
回复 使用道具 举报
原来是这样子啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马