思考题

问题描述

假设现在车站有4个窗口同时要将1000张车票售出,每个窗口每次只卖掉1张,请使用多线程来模拟这一卖票过程。如果用java编程思想,该怎样解决?请高手解答。。

解决方案

解决方案二:
importjava.util.concurrent.Semaphore;publicclassTicketSystem{privateSemaphoresemaphore=newSemaphore(100);privateIntegertickets=100;publicvoidstart(Stringname){Threadt=newThread(name){publicvoidrun(){while(true){if(semaphore.tryAcquire()){synchronized(tickets){tickets--;System.out.println(Thread.currentThread().getName()+"已经卖出了第"+(100-tickets)+"张票");}}else{break;}}}};t.start();}publicstaticvoidmain(String[]args){TicketSystemts=newTicketSystem();ts.start("james");ts.start("andy");ts.start("Tom");}}

解决方案三:
1楼的这里Semaphore类后面参数写100while(true)里表明他循环100次然后用synchronized按顺序打印出来如果这里没有synchronized也可以卖的时候只是不是1234但还是100张都会卖掉的
解决方案四:
《使用java编程思想》用使字诀。

时间: 2024-05-22 10:25:34

思考题的相关文章

关于 TCP 并发连接的几个思考题与试验

前几天我在新浪微博上出了两道有关 TCP 的思考题,引发了一场讨论 http://weibo.com/1701018393/eCuxDrta0Nn . 第一道初级题目是: 有一台机器,它有 一个 IP,上面运行了一个 TCP 服务程序,程序只侦听一个端口,问:从理论上讲(只考虑 TCP/IP 这 一层面,不考虑IPv6)这个服务程序可以支持多少并发 TCP 连接?答 65536 上下的直接刷掉. 具体来说,这个问题等价于:有一个 TCP 服务程序的地址是 1.2.3.4:8765,问它从理论上能

算法系列(七) 爱因斯坦的思考题(下)

CheckGroupRelation()函数需要根据当前组group的位置进行适当的处理,如果当前组是第一个 组或最后一个组,则group的相邻组只有一个,就是最靠近group的组,其它情况下group的相邻组都是 两个.CheckGroupRelation()函数的实现如下: 162 bool CheckGroupRelation(GROUP *groups, int groupIdx, ITEM_TYPE type, int value) 163 { 164 if(groupIdx == 0

课后思考题2:C语言用递归算法,将一个字符串逆序输出,提示:字符串以'\0'结尾。

问题描述 课后思考题2:C语言用递归算法,将一个字符串逆序输出,提示:字符串以''结尾. 课后思考题2:C语言用递归算法,将一个字符串逆序输出,提示:字符串以''结尾. 解决方案 void foo(char * s) { if (!s) return; foo(s + 1); printf("%c", *s); } 解决方案二: void function(char *p) { if(*p=='/0') return ; function(p+1); printf("%c&q

c-堆栈能不能进行排序后再Peek,C++数据结构的思考题?关于堆栈的排序,谢谢

问题描述 堆栈能不能进行排序后再Peek,C++数据结构的思考题?关于堆栈的排序,谢谢 堆栈能不能进行排序后再Peek,C++数据结构的思考题?关于堆栈的排序,谢谢 解决方案 http://blog.sina.com.cn/s/blog_6f24ba210100mr13.html 解决方案二: 可以参照这个额:http://www.cnblogs.com/xy-kidult/p/3274276.html

课后思考题1:C语言用递归算法,计算x的y次方,其中y是正整数

问题描述 课后思考题1:C语言用递归算法,计算x的y次方,其中y是正整数 课后思考题1:C语言用递归算法,计算x的y次方,其中y是正整数 解决方案 int foo(int x, int y) { if (y == 1) return x; return x * foo(x, y - 1); } 解决方案二: #include void main() { int x,y,i,s; scanf("%d,%d",&x,&y); s=1; // s for(i=1;i<=

c语言程序设计-一个c语言思考题。想了好久了

问题描述 一个c语言思考题.想了好久了 条件.只用if,switch和输入输出.做一个3个数的混合运算(带括号).提示.用到scanf的返回值. 如我输入(1+2)*3 输出9 我输入1+2*3输出7 解决方案 你这相当于编一个计算器.网上很多例子.http://jingyan.baidu.com/article/22fe7ced67cd443002617f98.html 解决方案二: 不知道,哈哈真的不知道 解决方案三: 括号的话要借助栈啊,代数计算器,要做完善还是挺麻烦的 解决方案四: 这个

《算法导论(原书第3版)》一思考题

思考题 3-1 (多项式的渐近行为) 假设p(n)=∑di=0aini是一个关于n的d次多项式,其中ad>0,k是一个常量.使用渐近记号的定义来证明下面的性质. a.若k≥d,则p(n)=O(nk). b.若k≤d,则p(n)=Ω(nk). c.若k=d,则p(n)=Θ(nk). d.若k>d,则p(n)=o(nk). e.若k<d,则p(n)=ω(nk). 3-2 (相对渐近增长) 为下表中的每对表达式(A,B)指出A是否是B的O.o.Ω.ω或Θ.假设k≥1.ε>0且c>1

《CCNA学习指南:数据中心(640-911)》——2.7 复习思考题

2.7 复习思考题 注意 以下问题旨在测试你是否理解了本章的知识.在本书介绍中提供了获得更多思考题的方法. 1.接收方主机没有收到所有它应该收到的数据分段,主机能够通过如下哪种行为来提高通信会话的可靠性? A.发送一个不同的源端口号 B.重新开始虚链路 C.减少序列号 D.缩小窗口大小 2.OSI模型中的哪一层与数据报的可靠传输相关? A.传输层 B.网络层 C.数据链路层 D.物理层 3.下列哪些一层设备能够用来扩大单个LAN网段所覆盖的范围?(选择两项) A.交换机 B.网卡 C.集线器 D

《CCNA学习指南:数据中心(640-911)》——1.8 复习思考题

1.8 复习思考题 注意以下问题旨在测试你是否理解了本章的知识.在本书介绍中提供了获得更多思考题的方法.1.在交换网络中最常见的两种网络拓扑是什么?(选择两项) A.总线拓扑 B.星型拓扑 C.网状拓扑 D.扩展星型拓扑 2.FDDI和令牌环使用哪个LAN物理拓扑? A.总线拓扑 B.环状拓扑 C.星型拓扑 D.网状拓扑 3.下列物理拓扑类型中,哪个拥有最多的连接数,并且最不适用于LAN? A.总线拓扑 B.星型拓扑 C.环状拓扑 D.网状拓扑 4.在物理星型拓扑中,当一台工作站失去了与其他设备

算法系列(七) 爱因斯坦的思考题(上)

这是一个很有趣的逻辑推理题,传说是爱因斯坦提出来的,他宣称世界上只有2%的人能解出这个 题目,传说不一定属实,但是这个推理题还是很有意思的.题目是这样的,据说有五个不同颜色的房 间排成一排,每个房间里分别住着一个不同国籍的人,每个人都喝一种特定品牌的饮料,抽一种特定 品牌的烟,养一种宠物,没有任意两个人抽相同品牌的香烟,或喝相同品牌的饮料,或养相同的宠物 ,问题是谁在养鱼作为宠物?为了寻找答案,爱因斯坦给出了十五条线索: (1).英国人住在 红色的房子里: (2).瑞典人养狗作为宠物: (3).