/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.

* 文件名称:    《多线程练习—买票小程序——Java第十四周》

* 作    者:       刘江波

* 完成日期:    2012     年   12    月     2   日

* 版 本 号:    v2.2

* 对任务及求解方法的描述部分

* 问题描述:

2.仿照例题9.14,模拟3个人排除买票,张某、李某和赵某买电影票,售票员只有3张五元的钱,电影票5元一张。张某拿20元一张的RMB排在李某的前面,李某排在赵某的前面拿一张10元的RMB买票,赵某拿一张5元的RMB买票。(选做题)

* 程序头部的注释结束

*/

package week14_2;

import java.awt.BorderLayout;

import java.awt.event.*;

import javax.swing.*;

public class Ticket

{

public static void main(String[] args)

{

new MyFrame();

}

}

class MyFrame extends JFrame implements Runnable,ActionListener

{

TicketSeller seller;

Thread buyer1,buyer2,buyer3;

static JTextArea text;

JButton start = new JButton("排队买票");

MyFrame()

{

seller = new TicketSeller();

buyer1 = new Thread(this);

buyer2 = new Thread(this);

buyer3 = new Thread(this);

text = new JTextArea(10,30);

start.addActionListener(this);

add(text,BorderLayout.CENTER);

add(start,BorderLayout.NORTH);

setVisible(true);

setSize(360,300);

validate();

}

public void actionPerformed(ActionEvent e)

{

try

{

buyer1.start();

buyer2.start();

buyer3.start();

}

catch(Exception exp) {}

}

public void run() {

if(Thread.currentThread() == buyer1)

{

seller.rule(20);

}

else if(Thread.currentThread() == buyer2)

{

seller.rule(10);

}

else if(Thread.currentThread() == buyer3)

{

seller.rule(5);

}

}

}

class TicketSeller

{

int money5=3, money10=0, money20=0;

String s=null;

public synchronized void rule(int money)

{

if(money == 5)//不用等待

{

money5++;

s = "给你入场券,你的钱正好。";

MyFrame.text.append("\n"+s);

}

else if(money == 20)

{

while(money5 < 3)

{

try

{

wait();//没有零钱,等待

}

catch(InterruptedException e){}

}

money5 = money5-3;

money20++;

s = "给你入场券,你给我20元,找你15元。";

MyFrame.text.append("\n"+s);

}

else if(money == 10)

{

while(money5 < 1)

{

try

{

wait();//没有零钱,等待

}

catch(InterruptedException e){}

}

money5 = money5-1;

money10++;

s = "给你入场券,你给我10元,找你5元。";

MyFrame.text.append("\n"+s);

}

notifyAll();

}

}

java 小程序 多线程_《多线程练习—买票小程序——Java第十四周》相关推荐

  1. java排队买票_【排队买票】 (Java代码)

    解题思路: 注意事项: 参考代码:public class 排队买票 { public static int count = 0; public static void qpl(char[] char ...

  2. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

  3. java什么时候使用多线程_多线程:到底什么时候该用多线程

    一.高并发 系统接受实现多用户多请求的高并发时,通过多线程来实现. 二.线程后台处理大任务 一个程序是线性执行的.如果程序执行到要花大量时间处理的任务时,那主程序就得等待其执行完才能继续执行下面的.那 ...

  4. java 并发编程多线程_多线程(一)java并发编程基础知识

    线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...

  5. JAVA多线程作业-多人买票

    JAVA多线程作业 作业要求: 1. 假设现在有一个售票员进行售票,票价为5元,初始状态:票数不限,票售员手中有1张10元钱: 2. 每来一个顾客买票,相当于是创建一个线程,注意,此时顾客共享的资源是 ...

  6. java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程

    多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同 ...

  7. java webpack web项目_官方出品,微信小程序和 Web 端同构解决方案——kbone

    介绍 最近在琢磨一些小程序开发和移动web开发,偶然间在Github上看到了这样一个项目--kbone,一个致力于微信小程序和 Web 端同构的解决方案.微信小程序的底层模型和 Web 端不同,我们想 ...

  8. java多线程实现多人买票

    /*** 票类* @author 2018121205**/ public class Ticket {public int ticket = 100;//100张票/*** 买票的方法* @para ...

  9. java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能

    原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...

最新文章

  1. 北京科技大学智能视觉参赛队伍 - 对于比赛总结
  2. 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题
  3. java 链表 传递_java 链表 传递过程中的问题
  4. 2017-2018-1 20155330 《信息安全系统设计基础》第11周学习总结
  5. 你还在用 Swagger?试试这个神器!
  6. win8配置mysql5.6,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
  7. Windows下GIt入门试验配置教程单机版
  8. NTT通信公司在大阪开通运营容灾数据中心
  9. Python matplotlib 线图(plt.plot())
  10. 计算机专业考研学习,计算机专业考研133分复习经验谈
  11. 非关系数据库-NoSQL探讨
  12. spss相关性分析_关公配赤兔——因子分析和SPSS
  13. java jsp 乱码_JSP中文乱码问题
  14. 电脑CPU型号是什么意思?
  15. Android开发者的Ane简单入门
  16. 等保2.0:这些等保测评要求,你都知道吗?
  17. 湖南省工信厅党组书记、厅长雷绍业一行莅临麒麟信安调研
  18. android中点击空白处隐藏软键盘
  19. 润乾报表echarts统计图省份地图设置
  20. mysql中having的意思_正确理解MySQL中的where和having的区别

热门文章

  1. 安卓数据恢复大师:PhoneRescue for Android Mac中文版
  2. 影响网站收录量有哪些因素
  3. (Java)socket网络编程及处理socket粘包拆包问题
  4. 2015.7.15(千股跌停,开盘及时出货。10:49由于绘制通道错误,错误加仓)
  5. 泉州dns服务器无响应,泉州联通dns服务器地址
  6. python基础(##16)
  7. 再见2021,程序员如何走向鄙视链的顶端?
  8. 拍案叫绝的创意如何诞生?
  9. 大数据之Hadoop——1概念
  10. 江西有哪些互联网企业推荐(上)?