- 浏览: 218827 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
zzhyq:
有没有后台是ASHX 的呀
Ext.tree.TreePanel -
693593336:
谢谢作者分享,正好用上
Ext.tree.TreePanel -
greatwqs:
提供一个下载的demo不是更好
基于servlet的 Freemarker Demo
演示线程不考虑完全的逻辑问题。例如50=20+20+5+5或50=10+10+20+5等其他情况。。。本例子在判断50找零的时候,只判断了这两种情况,其他的就没考虑的。重在演示线程的过程。。。。
Code:
- packagecc.nothing2012.blogServlet;
- importjava.util.ArrayList;
- importjava.util.List;
- /*=======题目:模仿例8-10,设计5个人排队买票,并规定卖票规则和排队顺序==========*/
- /*
- *模拟五个人排队买票,每人买1张票。售票员有1张20元和1张5元的钱,电影票一张5元。
- *排队从头到尾的顺序是:关五十、林二十、余五、李十、杨五
- *最后的买票顺序是:余五、李十、林二十、关五十、杨五
- */
- publicclassch8_4{
- publicstaticList<String>theResult=newArrayList<String>();//存放最后买票先后的结果
- publicstaticvoidmain(String[]args){
- String[]sName={"关五十","林二十","余五","李十","杨五"};
- Cinemac=newCinema(sName);
- Thread[]theads={newThread(c),newThread(c),newThread(c),
- newThread(c),newThread(c)};
- //for(inti=0;i<5;i++){//初始化5个进程
- //theads[i]=newThread(c);
- //}
- for(inti=0;i<5;i++){
- theads[i].setName(sName[i]);
- }
- for(inti=0;i<5;i++){
- theads[i].start();
- }
- while(true){//将最后结果进行打印
- try{
- Thread.sleep(1000);
- }catch(InterruptedExceptione){
- e.printStackTrace();
- }
- if(theResult!=null){
- if(theResult.size()==5){
- printMessage("最后买票先后的结果");
- for(inti=0;i<5;i++){
- System.out.print(theResult.get(i)+"/t");
- }
- break;
- }
- }
- }
- }
- //负责打印信息。
- publicstaticvoidprintMessage(Objecto){
- System.out.println(o);
- }
- }
- //=======================
- classCinemaimplementsRunnable{
- TicketSellerseller;
- String[]sName;
- publicCinema(String[]sName){
- seller=newTicketSeller();
- this.sName=sName;
- }
- publicvoidrun(){
- if(Thread.currentThread().getName().equals(sName[0])){
- seller.sellTicket(50);
- }elseif(Thread.currentThread().getName().equals(sName[1])){
- seller.sellTicket(20);
- }elseif(Thread.currentThread().getName().equals(sName[2])){
- seller.sellTicket(5);
- }elseif(Thread.currentThread().getName().equals(sName[3])){
- seller.sellTicket(10);
- }elseif(Thread.currentThread().getName().equals(sName[4])){
- seller.sellTicket(5);
- }
- }
- }
- //============售票员卖票的操作==============
- classTicketSeller{
- intfiveNumber=1,tenNumber=0,twentyNumber=1,fiftyNumber=0;//小票员现有5元和20元的钱各一张
- publicsynchronizedvoidsellTicket(intreceiveMoney){
- StringsName=Thread.currentThread().getName();
- if(receiveMoney==5){//票一张是5元,刚好5元就直接卖给他,不用找零了。
- fiveNumber+=1;
- ch8_4.printMessage(sName+"给小票员5元钱,小票员卖个"+sName+"一张票不用找赎");
- ch8_4.theResult.add(sName);
- }elseif(receiveMoney==10){
- while(fiveNumber<1){
- ch8_4.printMessage(sName+"给售票员10元");
- ch8_4.printMessage("小票员请"+sName+"靠边等一会");
- try{
- wait();
- }catch(InterruptedExceptione){
- e.printStackTrace();
- }
- ch8_4.printMessage(sName+"结束等待,继续买票");
- }
- //有零钱了
- fiveNumber=fiveNumber-1;
- tenNumber+=1;
- ch8_4.printMessage(sName+"给售票员10元钱,售票员卖给"+sName+"一张票,找赎5元");
- ch8_4.theResult.add(sName);
- }elseif(receiveMoney==20){
- while(fiveNumber<1||tenNumber<1){
- ch8_4.printMessage(sName+"给售票员20元/n售票员请"+sName+"靠边等一会儿");
- try{
- wait();
- }catch(InterruptedExceptione){
- e.printStackTrace();
- }
- ch8_4.printMessage(sName+"结束等待,继续买票");
- }
- fiveNumber=fiveNumber-1;
- tenNumber=tenNumber-1;
- twentyNumber+=1;
- ch8_4.printMessage(sName+"给售票员20元钱,售票员卖给"+sName+"一张票,找零15元");
- ch8_4.theResult.add(sName);
- }elseif(receiveMoney==50){
- Stringflag="";
- //booleanisOK=true;
- while(true){
- if(fiveNumber>0){//45块的组合有两种情况
- if(twentyNumber==2){
- flag="2twenty";
- break;
- //isOK=false;
- }elseif(twentyNumber==1&&tenNumber==2){
- flag="1twenty";
- //isOK=false;
- break;
- }
- }
- ch8_4.printMessage(sName+"给售票员50元/n售票员请"+sName+"靠边等一会儿");
- try{
- wait();
- }catch(InterruptedExceptione){
- e.printStackTrace();
- }
- ch8_4.printMessage(sName+"结束等待,继续买票");
- }
- if(flag.endsWith("2twenty")){
- fiveNumber-=1;
- twentyNumber=twentyNumber-2;
- fiftyNumber+=1;
- }elseif(flag.equals("1twenty")){
- fiveNumber=fiveNumber-1;
- tenNumber=tenNumber-2;
- twentyNumber=twentyNumber-1;
- }
- ch8_4.printMessage(sName+"给售票员50元钱,售票员卖给"+sName+"一张票,找零45元");
- ch8_4.theResult.add(sName);
- }
- notifyAll();
- }
- }
运行结果如下:
关五十给售票员50元
售票员请关五十靠边等一会儿
林二十给售票员20元
售票员请林二十靠边等一会儿
余五给小票员5元钱,小票员卖个余五一张票不用找赎
关五十结束等待,继续买票
关五十给售票员50元
售票员请关五十靠边等一会儿
林二十结束等待,继续买票
林二十给售票员20元
售票员请林二十靠边等一会儿
李十给售票员10元钱,售票员卖给李十一张票,找赎5元
关五十结束等待,继续买票
关五十给售票员50元
售票员请关五十靠边等一会儿
林二十结束等待,继续买票
林二十给售票员20元钱,售票员卖给林二十一张票,找零15元
关五十结束等待,继续买票
关五十给售票员50元
售票员请关五十靠边等一会儿
杨五给小票员5元钱,小票员卖个杨五一张票不用找赎
关五十结束等待,继续买票
关五十给售票员50元钱,售票员卖给关五十一张票,找零45元
最后最票先后的结果
余五李十林二十杨五关五十
发表评论
-
Singletons and lazy loading
2011-09-26 19:47 914The Java Memory Model # ... -
JVM blogs
2011-09-14 21:40 470话说是 【JVM详解的专题】,很多文章的差不多的,有的详 ... -
effective Java _Generic
2011-09-12 12:03 0#23 -
Class Loader
2011-08-28 16:47 774专栏合集(一):Java深度历险 pdf已上传1 ... -
Study Linkinginginginginginginging
2011-08-27 10:42 730#1 java 工程和类等路径汇总 #2 让Apac ... -
How to send Email
2011-08-26 15:32 6021.java mail 使用介绍 2.Java ... -
Java_Try_Finally
2011-07-18 11:51 643public class TestTryCatch { ... -
Java Class ClassLoader
2011-07-15 17:05 1027下午在看《Java 深度历险》,对Class & ... -
关键字 final & transient
2011-06-08 16:49 965final 详见: http://java.chinaitl ... -
课程设计3
2010-01-04 14:09 779题目3:动态分区式存储管理的存储分配和回收 一、设计目的 ... -
课程设计1
2010-01-04 14:24 748采用的是C++语言编写的,但PCB的数据结构是符合要求的。 ... -
os课程设计后感
2010-01-04 14:48 541今天终于把操作系统的实验给终结了。基本要求算是符合了,可能表 ... -
java作业01
2010-03-06 16:02 663package homework01; public cla ... -
Java作业02
2010-03-11 14:22 789package homework02; import jav ... -
File函数返回当前路径
2010-03-12 19:37 671package netWorkMoreThreadCopy; ... -
多线程文件复制(界面)1
2010-03-12 23:45 940package netWorkMoreThreadCopy; ... -
Java IO 转摘
2010-03-15 00:26 510java中的io中的(input/output)str ... -
java作业03
2010-03-17 00:59 696package homework03; import jav ... -
Java作业
2010-03-17 01:19 640package homework03;import java. ... -
java作業3
2010-03-18 18:36 592package homework03;/** 首先编写一个抽象 ...
相关推荐
【标题】:“第八章作业”通常指的是某个学习课程或教程中的第八个章节的作业或练习题目,这在编程教育中很常见,特别是对于系统性的IT课程如北大青鸟的S2课程。北大青鸟是中国知名的计算机职业教育机构,其S2课程...
在"JAVA OOP 第一章作业"中,我们可以预期学生将接触到一系列基础但重要的面向对象编程概念。 1. 类与对象 类是OOP的基础,它是一个模板或者蓝图,定义了一组属性(数据成员)和行为(方法)。对象是类的实例,它们...
在这个“s2 JavaOOP上机作业全部代码”压缩包中,包含了学生在学习Java OOP时可能遇到的各种练习和问题的解决方案。这些代码示例旨在帮助学生深入理解类、对象、继承、封装、多态等核心OOP概念。 首先,让我们详细...
总之,"accp5.0java第4章作业"涵盖了Java编程语言的基础和核心概念,旨在帮助学员建立起坚实的基础,为后续更复杂的编程学习打下扎实的基础。在解决作业中的问题时,学员需要不断思考、实践和反思,这将有助于他们...
在本压缩包文件中,"Accp5.0 S1java第6章~第8章作业"涵盖了Java编程学习的三个重要章节。Accp5.0通常指的是北大青鸟APTECH的ACCP软件工程师培训课程的一个版本,该课程旨在为学员提供全面的Java编程技能。第6章至第8...
第8章可能涉及更高级的主题,例如: 1. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等数据结构的使用。 2. **接口**:接口的定义、实现和用途。 3. **内部类**:匿名类、局部内部类、成员内部类等。 4. ...
【北大青鸟ACCP5.0 Java第八章理论与上机作业答案详解】 在学习Java编程的过程中,理论知识与实践操作同样重要。北大青鸟的ACCP5.0课程是针对初学者设计的一套全面的Java教学体系,旨在帮助学员掌握扎实的编程基础...
在本节中,我们将深入探讨Java面向对象编程(OOP)的关键概念,这些概念在"JAVA OOP 第五章作业"中可能涉及。面向对象编程是Java编程的核心,它允许我们设计复杂的软件系统,通过模拟现实世界中的实体来解决问题。 ...
在“Accp8.0\S2\使用Java实现数据库编程 第二章”这一主题中,我们聚焦于如何利用Java语言进行数据库编程。这通常涉及到Java的JDBC(Java Database Connectivity)技术,它是Java平台的标准接口,允许Java应用程序...
【标题】"清华大学课程_java程序设计_郑莉_第八章作业"揭示了这是一份来自清华大学的编程课程,专门针对Java程序设计,并由教师郑莉指导。第八章作业表明这是学习过程中一个特定阶段的练习,旨在帮助学生巩固和应用...
Java第8章 继承和多态含源代码 Java第8章 继承和多态含源代码Java第8章 继承和多态含源代码 Java第8章 继承和多态含源代码 Java第8章 继承和多态含源代码 Java第8章 继承和多态含源代码
《使用Java理解程序逻辑》第七章,主要涵盖了Java编程中的一些关键概念和技巧,旨在帮助读者深入理解如何通过Java语言构建有效的程序逻辑。本章内容可能包括但不限于控制流程、循环结构、条件判断、函数(方法)的...
【清华大学课程_java程序设计_郑莉_第四章作业】是一门深入探讨Java编程技术的课程,由清华大学知名教师郑莉主讲。这门课程聚焦于Java语言的核心概念和实际应用,旨在帮助学生掌握面向对象编程的基本原理和技巧,...
【标题】"13章作业200515221911 (1)_java作业_源码" 暗示了这是一个关于Java编程的作业,可能包含第13章的学习内容,并且提供了源代码。这可能是学生在学习《JAVA语言程序设计与数据结构第十一版基础篇》时完成的...
在Java面向对象编程(OOP)的学习过程中,第二...在完成这个第二章的作业时,你需要编写代码来体现上述概念,同时理解和应用它们解决实际问题。这将帮助你深入理解Java面向对象编程,并为后续章节的学习打下坚实基础。
【ACCP5.0 S1 Java第二章作业答案】是一个针对学习ACCP5.0(Accelerated Certified Computer Professional 5.0)课程第一学期(S1)Java编程的学生的资源集合,主要涵盖了Java语言的基础知识及其应用。这个压缩包...
在“Accp8.0\S2\使用Java实现数据库编程 第八章”这一主题中,我们聚焦于如何利用Java这门强大的开发语言进行数据库交互。Java数据库编程是后端开发中的核心技能,它使得应用程序能够有效地存储、检索和管理数据。本...
【北大青鸟ACCP5.0 Java上机作业】是一套专门为学习Java编程语言的学生设计的实践课程。这个课程旨在通过实际操作加深学生对Java语言的理解,提高编程技能。ACCP(Accredited Computer Course Professional)是...
【ACCP5.0 S1 Java第一章答案】涵盖了初学者在学习Java编程语言时的基础知识点。ACCP(Advanced Certified Computer Professional)是一个针对计算机专业人士的认证课程,而S1(可能是"Stage 1"的缩写)是这个课程的...