第九周课程总结&实验报告(七)
一.实验题目
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
实验代码
package maipiao; class MyThread implements Runnable{ private int ticket = 1000; public void run() { if(ticket>0) { for(int i=0;i<1000;i++) { try { Thread.sleep(0); } catch(Exception e) { } System.out.println(Thread.currentThread().getName()+"卖票:ticket="+ticket--); if(ticket==0) { break; } } } } }
package maipiao;
public class test {
public static void main(String[] args) {
MyThread mt1 = new MyThread();
Thread t1 = new Thread(mt1,"窗口1");
Thread t2 = new Thread(mt1,"窗口2");
Thread t3 = new Thread(mt1,"窗口3");
Thread t4 = new Thread(mt1,"窗口4");
Thread t5 = new Thread(mt1,"窗口5");
Thread t6 = new Thread(mt1,"窗口6");
Thread t7 = new Thread(mt1,"窗口7");
Thread t8 = new Thread(mt1,"窗口8");
Thread t9 = new Thread(mt1,"窗口9");
Thread t10 = new Thread(mt1,"窗口10");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
t9.start();
t10.start();
}
}
实验截图
二.学习总结
线程操作的主要方法
1.在Thread类中,可以通过 getname() 方法取得线程的名称,通过 setname()方法设置线程的名称
2.判断线程是否启动
因为线程通过Thread类之中的start()方法通知CPU这个线程已经准备好启动,然后就等待分配CPU资源,运行此线程。在Java中可以使用isAlive()方法来测试线程是否已经启动而且还在运行
3.线程的休眠
可以直接使用Thread.sleep()方法即可实现
4.线程的强制运行
可以使用join()方法让一个线程强制运行。在线程强制运行期间 其他线程无法运行,必须等待此线程完成之后才可以继续执行
5.中断线程
当一个线程运行时,另外一个线程可以直接通过interrupt()方法,中断其运行状态
6.线程的优先级
在Java线程操作中,哪个线程优先级高就有可能先被执行 所以可以使用setPriority()方法可以设置一个线程的优先级
7.线程的礼让
使用yield()方法可以将一个线程的操作暂时让给其他线程执行
原文地址:https://www.cnblogs.com/tb-0706/p/11738691.html
- Windows2012搭建我的世界(Minecraft)服务器超简单
- 高效程序员的MacBook工作环境配置
- vsftpd搭建自己的ftp服务器
- Linux一键安装Transmission电影下载到服务器
- centos安装ab工具给网站进行压力测试
- ubuntu16.04安装mongodb教程
- linux压缩解压命令使用
- linux使用wc命令查看文件行数、字母、字节数命令
- 程序员偷偷深爱的 9 个不良编程习惯
- 低级程序员和高级程序员的区别
- Silverlight学习(二)
- Silverlight学习(三)
- ArcGIS for Android学习(一)
- Arcgis for Silverlight学习(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-基金数据-基金行情数据
- AkShare-期权数据-商品期权
- AkShare-股票数据-破净股统计
- AkShare-股票数据-创新高和新低的股票数量
- AkShare-股票数据-A股个股市盈率、市净率和股息率
- AkShare-股票数据-A股市净率
- AkShare-股票数据-A股市盈率
- AkShare-期货数据-期货交易日历
- AkShare-另类数据-彭博亿万富豪指数
- AkShare-股票数据-券商业绩月报
- AkShare-期货数据-仓单日报-上海期货交易所
- AkShare-期货数据-仓单日报-大连商品交易所
- AkShare-期货数据-仓单日报
- AkShare-股票数据-美港目标价
- AkShare-Websocket-行情数据