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

要求:

(1)总票数1000张;

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

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

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

实验代码:

package y;

class MyThread implements Runnable{
private int ticket=1000;
public void run(){
for(int i=0;i<=1000;i++){
this.sales();
}
}
public synchronized void sales(){
if(ticket>0){
try{
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+":"+ticket--);
}
} }
package y;

public class Demo2{
public static void main(String[] args){
MyThread my=new MyThread();
new Thread(my,"窗口1").start();
new Thread(my,"窗口2").start();
new Thread(my,"窗口3").start();
new Thread(my,"窗口4").start();
new Thread(my,"窗口5").start();
new Thread(my,"窗口6").start();
new Thread(my,"窗口7").start();
new Thread(my,"窗口8").start();
new Thread(my,"窗口9").start();
new Thread(my,"窗口10").start(); }
}

运行结果:

学习总结:

1.线程状态:

创建状态->就绪状态(新建状态以后,调用该线程的start()就可以启动线程)->运行状态->堵塞状态(一个正在执行的线程在某些特殊情况下,如果被人为的挂起或需要执行耗时的输入操作时,会让出CPU并中止自己的执行)->死亡状态(线程调用spot()方法或run()方法执行结束后,即处于死亡状态)

2.线程操作的相关方法:

3.线程的强制运行:

在线程操作中,可以使用join()方法让一个线程强制运行。在线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才能继续执行。

join()方法会抛出InterruptedException的异常,所以编程时必须把join()方法写在Try...catch块内。

4.线程的休眠:

使用Thread.sleep()方法既可以允许一个线程进行暂时的休眠。

5.File类:

第九周学习总结&实验报告(7)的更多相关文章

  1. 第九周学习总结&实验报告七

    实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...

  2. 第五周学习总结&实验报告(三)

    第五周学习总结&实验报告(三) 这一周又学习了新的知识点--继承. 一.继承的基本概念是: *定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需 ...

  3. 第九周课程总结 & 实验报告(七)

    第九周课程总结 一.多线程 1.线程的状态 2.线程操作的相关方法 二.Java IO 1.操作文件的类---File ()基本介绍 ()使用File类操作文件 .RandomAccessFile类 ...

  4. 第五周学习总结&实验报告三

    第五周课程总结 1.this和super的区别: this:访问本类中的属性,如果本类没有此属性则从父类中继续查找:访问本类中的方法,如果本类中没有此方法则从父类中继续查找:调用本类构造,必须放在构造 ...

  5. 第八周学习总结&实验报告(6)

    实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...

  6. 第十三周学习总结&实验报告(八)

    图像界面 件处理及监听处理 1.键盘事件(KeyEvent)及监听处理(KeyListener) 1.1加入事件监听 super.addWindowListener(new WindowAdapter ...

  7. 第九周课程总结&实验报告

    实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. public c ...

  8. 第九周课程总结&实验报告七

    实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. package ...

  9. 第九周课程总结&实验报告(七)

    实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验代码 pac ...

随机推荐

  1. leetcode 1266. Minimum Time Visiting All Points

    On a plane there are n points with integer coordinates points[i] = [xi, yi]. Your task is to find th ...

  2. 关于redis的几件小事(八)缓存与数据库双写时的数据一致性

    1.Cache aside pattern 这是最经典的 缓存+数据库 读写模式,操作如下: ①读的时候,先读缓存,缓存没有就读数据库,然后将取出的数据放到缓存,同时返回请求响应. ②更新的时候,先删 ...

  3. java读取blob全身乱码

    一.BLOB操作 .入库 ()JDBC方式 //通过JDBC获得数据库连接 Class.forName("oracle.jdbc.driver.OracleDriver"); Co ...

  4. Jquery.serializeArray()可看表单提交内容

  5. Dedecms 生成速度慢 的解决办法

    从dedecms官网论坛找到个合适的代码 include/inc/inc_fun_SpGetArcList.php for($i=0;$i<$ridnum;$i++){ if($tpsql==& ...

  6. jieba:我虽然结巴,但是我会分词啊

    介绍 jieba目前是一款比较好分词模块 分词 import jieba # 可以使用jieba.cut进行分词 sentence = "失去恋人所带来的苦痛远远超过了他的承受范围" ...

  7. 为Qtcreator 编译的程序添加管理员权限

    (1)创建资源文件 myapp.rc 1 24 uac.manifest (2)创建文件uac.manifest <?xml version="1.0" encoding=& ...

  8. 记一次部署PHP遇到的编码问题故障

    php开发给我项目和数据库,我按正常部署流程部署,开始发现之梦的后台登陆不了,后发现是属主属组不对,代码直接解压后是root的,更改后,后台能登陆,但部分显示乱码.后将正常的数据库文件重新导入后,显示 ...

  9. 将UTC日期字符串转为本地时间字符串,如@"yyyy-MM-dd'T'HH:mm:ssZ"转换为本地时间

    由于苹果商店上线应用24小时内会不稳定,更新提醒可能会陷入死循环,更新提醒需要24小时后弹出,需要把苹果返回的上线时间转换为本地时间故写了下边的方法: //将UTC日期字符串转为本地时间字符串//输入 ...

  10. mysql 在gtid环境下缺少一部分binlog部署从库

    我的环境: 有两台linux服务器 一台是192.168.1.1  mysql  端口3301 一台是192.168.1.2   mysql 端口3303 要讨论如何恢复从库,我们得先来了解如下一些概 ...