java 小程序 多线程_《多线程练习—买票小程序——Java第十四周》
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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第十四周》相关推荐
- java排队买票_【排队买票】 (Java代码)
解题思路: 注意事项: 参考代码:public class 排队买票 { public static int count = 0; public static void qpl(char[] char ...
- java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable
线程 1 线程概述 1.1 什么是线程 v 线程是程序执行的一条路径, 一个进程中可以包含多条线程 v 一个应用程序可以理解成就是一个进程 v 多线程并发执行可以提高程序的效率, 可以同时完成多 ...
- java什么时候使用多线程_多线程:到底什么时候该用多线程
一.高并发 系统接受实现多用户多请求的高并发时,通过多线程来实现. 二.线程后台处理大任务 一个程序是线性执行的.如果程序执行到要花大量时间处理的任务时,那主程序就得等待其执行完才能继续执行下面的.那 ...
- java 并发编程多线程_多线程(一)java并发编程基础知识
线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...
- JAVA多线程作业-多人买票
JAVA多线程作业 作业要求: 1. 假设现在有一个售票员进行售票,票价为5元,初始状态:票数不限,票售员手中有1张10元钱: 2. 每来一个顾客买票,相当于是创建一个线程,注意,此时顾客共享的资源是 ...
- java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程
多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同 ...
- java webpack web项目_官方出品,微信小程序和 Web 端同构解决方案——kbone
介绍 最近在琢磨一些小程序开发和移动web开发,偶然间在Github上看到了这样一个项目--kbone,一个致力于微信小程序和 Web 端同构的解决方案.微信小程序的底层模型和 Web 端不同,我们想 ...
- java多线程实现多人买票
/*** 票类* @author 2018121205**/ public class Ticket {public int ticket = 100;//100张票/*** 买票的方法* @para ...
- java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能
原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...
最新文章
- 北京科技大学智能视觉参赛队伍 - 对于比赛总结
- 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题
- java 链表 传递_java 链表 传递过程中的问题
- 2017-2018-1 20155330 《信息安全系统设计基础》第11周学习总结
- 你还在用 Swagger?试试这个神器!
- win8配置mysql5.6,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
- Windows下GIt入门试验配置教程单机版
- NTT通信公司在大阪开通运营容灾数据中心
- Python matplotlib 线图(plt.plot())
- 计算机专业考研学习,计算机专业考研133分复习经验谈
- 非关系数据库-NoSQL探讨
- spss相关性分析_关公配赤兔——因子分析和SPSS
- java jsp 乱码_JSP中文乱码问题
- 电脑CPU型号是什么意思?
- Android开发者的Ane简单入门
- 等保2.0:这些等保测评要求,你都知道吗?
- 湖南省工信厅党组书记、厅长雷绍业一行莅临麒麟信安调研
- android中点击空白处隐藏软键盘
- 润乾报表echarts统计图省份地图设置
- mysql中having的意思_正确理解MySQL中的where和having的区别