黑马程序员技术交流社区
标题:
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