黑马程序员技术交流社区
标题:
分享一下笔试题
[打印本页]
作者:
Jayshun
时间:
2014-11-11 17:31
标题:
分享一下笔试题
package com.itheima;
/*5、 编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、
售票窗口、售票中心。售票中心分配一定数量的票,由若干个售票窗口进行出售,
利用你所学的线程知识来模拟此售票过程。
*/
public class Test5 {
public static void main(String[]args){
Ticket tt=new Ticket();
TicketSealCenter tc=new TicketSealCenter(tt);
SealWindow w1=new SealWindow(tt);
SealWindow w2=new SealWindow(tt);
SealWindow w3=new SealWindow(tt);
SealWindow w4=new SealWindow(tt);
new Thread(tc).start();
new Thread(w1).start();
new Thread(w2).start();
new Thread(w3).start();
new Thread(w4).start();
}
}
//创建票的类,每张给一个ID
class Piao{
int id;
Piao(int id) {
this.id = id;
}
public String toString() {
return "piao: " + id;
}
}
class Ticket{//创建售票信息
int index=0;
Piao[] arrp=new Piao[100];
public synchronized void set(Piao p){//提供给票的方法,用锁解决线程安全问题
while(index==arrp.length){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
this.notify();
arrp[index]=p;
index++;
}
public synchronized Piao get(){//对外提供取票的方法,解决线程同步问题
while(index==0){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("票已售欣,请稍后在试。。。。");
}
this.notifyAll();
index--;
return arrp[index];
}
}
class SealWindow implements Runnable{//售票窗口调用取票的方法
Ticket tc=null;
SealWindow(Ticket tc){
this.tc=tc;
}
public void run() {
for(int i=0;i<20;i++ ){
Piao p=tc.get();
System.out.println("窗口剩余票:"+p);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class TicketSealCenter implements Runnable{//售票中心发布一定数量的票
Ticket tc=null;
TicketSealCenter(Ticket tc){
this.tc=tc;
}
public void run() {
for(int i=0;i<100;i++){
Piao p=new Piao(i);
tc.set(p);
System.out.println("售票中心已发布票:"+p);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
作者:
w239983684
时间:
2014-11-11 20:52
貌似老师讲多线程时就拿这个举例的。
作者:
韶山
时间:
2014-11-11 21:03
感谢分享学习了。
作者:
qq8921310
时间:
2014-11-11 21:54
需要这么麻烦么?
作者:
Jayshun
时间:
2014-11-12 18:22
我只会这个写法啊
作者:
范中俊
时间:
2014-11-12 22:17
学习了 :),
作者:
时间都去哪了
时间:
2014-11-12 22:54
学习了,先收藏
作者:
聪明叉
时间:
2014-11-12 23:36
学习了~~~
作者:
卷毛拉风
时间:
2014-11-13 10:13
谢谢分享哦哦哦
作者:
王世虎
时间:
2014-11-13 11:44
我觉得是票务中心分配票,售票窗口卖票。多线程操作同一资源,动作不同。线程间通信
作者:
爱如kongcheng
时间:
2015-5-8 22:47
Jayshun 发表于 2014-11-12 18:22
我只会这个写法啊
这个是面试时候的笔试题目吗?
作者:
直护这夜
时间:
2015-5-12 22:18
谢谢分享,已经记录了
作者:
王连正
时间:
2015-8-3 17:01
这个是我的面试题,好坑啊
作者:
15536889258
时间:
2015-11-6 11:50
路过,看看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2