黑马程序员技术交流社区

标题: Java基础简单的多窗口售票 [打印本页]

作者: wx348602984    时间: 2015-4-18 23:36
标题: Java基础简单的多窗口售票
package cn.itcast2;
/*
* 线程安全问题:
*                 多个窗口卖指定个数的票
*                 3个窗口卖100张票
*                 票:共享数据
*                 窗口:线程
*/
public class Ticket implements Runnable{
        //定义成员变量,来表示车票的个数
        private int tickedNumber = 100;
        //定义一个对象,来做代码块同步的锁
        private Object object = new Object();
        //重写run方法
        @Override
        public void run() {
                //同步代码块
                synchronized(object){
                        //来确定条件
                        while(true){
                                if(tickedNumber>0){
                                        try {//休眠防止一张票买多次
                                                Thread.sleep(10L);
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }
                                        System.out.println(Thread.currentThread().getName()+"正在售票:"+tickedNumber--);//卖出一张,票数减一
                                }
                        }
                }
        }
}
package cn.itcast2;

public class Test3 {

        public static void main(String[] args) {
                //创建票对象
                Ticket ticket = new Ticket();
                //创建线程对象
                Thread thread = new Thread(ticket,"窗口1");
                Thread thread2= new Thread(ticket,"窗口2");
                Thread thread3= new Thread(ticket,"窗口3");
                //开启线程
                thread.start();
                thread2.start();
                thread3.start();

        }

}

作者: msyx9871453    时间: 2015-4-19 11:39
:handshake:handshake
作者: wx348602984    时间: 2015-4-20 22:24
:handshake:handshake
作者: itheima_llt    时间: 2015-4-20 23:29
很好,辛苦楼主发这么有意义的帖
作者: wx348602984    时间: 2015-4-21 22:39
itheima_llt 发表于 2015-4-20 23:29
很好,辛苦楼主发这么有意义的帖

不客气;P;P;P
作者: !85684009ex    时间: 2015-5-18 23:23
膜拜大神!谢谢你的信息!
作者: zq19910303    时间: 2015-5-19 06:50
同步的代码发生了错误,while(ture)不应该在同步代码里面,否则的话会导致一个线程不执行完循环不会解锁,而循环结束了,其他的线程也就没什么可做的了
作者: qian0217wei    时间: 2015-5-19 08:22
可以通过jdk1.5中的lock和unlock优化,关键是可以创建多个collection对象
作者: xgd6612    时间: 2015-5-19 09:32
没搞懂。发这个代码是来干啥的~~
作者: QQheima    时间: 2015-5-19 09:35
楼主自学还是报班的,用了几天学到多线程这里的
作者: leeshaodong    时间: 2015-5-20 22:17
腻害。
作者: weiwei1    时间: 2015-6-29 18:12
还没学到多线程 先预习
作者: 357955778    时间: 2015-6-29 19:28
赞一个!




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