Java实验报告

班级 计科二班 学号 20188442 姓名 吴怡君

完成时间 2019.10.25

评分等级

实验任务详情:

完成火车站售票程序的模拟。

要求:

(1)总票数1000张;

(2)10个窗口同时开始卖票;

(3)卖票过程延时1秒钟;

(4)不能出现一票多卖或卖出负数号票的情况。

实验代码

package Domon6;

	public class  ticket implements Runnable {
private int tickets=1000; public void run() { while(true) {
if(this.Tickettest()!=1) {
System.out.println(Thread.currentThread().getName()+"票已卖完");
return;
}
try {
Thread.yield(); //这里需要礼让给其它线程,防止一个线程独占
Thread.sleep(1000); //等待一秒钟
}catch (InterruptedException e) { e.printStackTrace();
}
} } public synchronized int Tickettest() { //同步所有窗口,以防出现一票多买与负数
if(this. tickets>=1) {
this. tickets--;
System.out.println(Thread.currentThread().getName()+"购票成功!"+"剩余票数"+this. tickets);
return 1;
}
return 0;
}
}
package Domon6;

public class test { 

	    public static void main(String[] args) { 

	        ticket t=new ticket();
for(int i=0;i<10;i++) { //由于程序运行时,是从Thread-0开始,所以可以用for循环实现
new Thread(t).start();
}
} }

实验结果截图



小题总结

这是一道简单的模拟买票的一道题目,主要是运用多线程来实现,多线程可以有两种方法,直接继承Thread父类,另一种就是我写的这种Runnable,这个相比前一个就有一个很好的优点,后者可以同步,但是前者不可以,其他的都是书上的简单方法,总体来说,要理解这些关系就很简单,感觉还行。

课程总结

这周主要学习的知识点是关于线程和他的一些相关方法,首先线程分为四五个状态。1:创建状态、2:就绪状态、3:运行状态、4:堵塞状态、5:死亡状态,然后CPU根据线程的优先级进行调配。然后就是了解了一些简单的的方法,线程启动,线程的强制运行,线程的休眠,线程的优先级,线程的礼让等等。其中通过setPriority()方法可以设置一个线程的优先级。当然后面还有些老师谈到的一些知识,线程的生命周期,其实大多方法在JAVA中都已经定义好了,所以对于这些知识要有个大致的了解。继续努力。

最新文章

  1. Scalaz(33)- Free :算式-Monadic Programming
  2. fastJSON☞JSONParameters☞时区的修改☞时间最后有一个&quot;Z&quot;
  3. 【转】TextView长按复制实现方法小结
  4. CSS 笔记三(Tables/Box Model/Outline)
  5. 六、saltstack的module组件
  6. JSON Viewer
  7. 一月份实现Adb小程序
  8. MyEclipse 10官网下载地址以及破解方法
  9. JSP三大指令 /9大内置对象 /Javabean / EL
  10. [转]Android DPAD not enabled in AVD
  11. 三星Samsung 4.4.2该负责人制度,简化名单
  12. Vue原理--双向数据绑定
  13. MT【301】值域宽度
  14. 如何让你的数据有null
  15. 【APP测试(Android)】--升级更新
  16. k8s总结(脑图图片)
  17. cdqz2017-test11-占卜的准备
  18. 国内代码托管平台(Git)
  19. 基于SSH框架的网上书店系统开发的质量属性
  20. BrowserLog——使用Chrome控制台作为Log查看器

热门文章

  1. 解决c#distinct不好用的问题
  2. Mysql: 开启慢查询日志[ERROR] unknown variable &#39;log-slow-queries&#39;处理办法
  3. 数组遍历 forEach 方法
  4. CSS的Animation&amp;Transition&amp;gradients属性
  5. Spring Boot教程(三十二)多数据源配置与使用(2)
  6. JavaWeb_初识监听器Listener
  7. Unknown tag (s:property)的原因
  8. C++入门经典-例4.6-使用重载函数
  9. LeetCode 17. 电话号码的字母组合(Letter Combinations of a Phone Number)
  10. loadrunner事务判断常用方法