zoukankan      html  css  js  c++  java
  • 第九周课程总结&实验报告(七)

    实验任务详情:

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

    实验源码:

    package ash;
    
    public class MyThread implements Runnable{
        private int ticket=1000;
    	public void run() {
    		for(int i=0;i<=1000;i++) {
    			synchronized(this) {
    				if(ticket>0) {
    					try {
    						Thread.sleep(1000); 
    					}catch(InterruptedException e) {
    						e.printStackTrace();
    					}
    					System.out.println(Thread.currentThread().getName()+"剩余票数:"+ticket--);
    				}
    				}
    			}
    			
    	}
    
    }
    
    package ash;
    
    public class Test {
    	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();
    		
    	}
    
    }
    

    实验结果:

    实验过程:

    首先利用runnable接口实现多线程,达到资源共享的目的。本题涉及到几个线程操作的相关方法:1.利用getname()方法设置线程的名称。2.直接使用Thread.sleep()方法进行延时一秒的操作。3.为避免产生负数情况,使用同步代码块(synchronize(同步对象){ })解决同步问题。

    课程总结:

    Thread类(不能被资源共享)与Runnable接口(可以资源共享):

    两者都可以实现多线程,Thread类是Runnable接口的子类,但Thread类没有完全实现Runnable接口中的run()方法。

    线程操作的相关方法:

    ①:取得和设置线程名称(getName());
    ②:判断线程是否启动(isAlive());
    ③:线程的强制运行(jion());
    ④:线程的休眠(Thread.sleep());
    ⑤:中断线程(interrupt());
    ⑥:后台线程(setDaemon());
    ⑦:线程的优先级。哪个线程的优先级高,哪个线程就有可能会先被执行;
    ⑧:线程的礼让(yield())。

    同步与死锁

    ①:使用同步代码块或者同步方法进行同步;
    ②:过多的同步会产生死锁。

    学习总结:

    老师这周布置的作业看来是用心良苦啊。这个题目是老师上课讲的,而且书上都有的。之所以让我们做,原因有三。一、希望我们能有改进优化增加的部分。二、根据作业判断上课成效,同学有没有听进去。三、上周有些抄袭让老师心塞了,所以不为难大家,如果还有人继续照搬他人的,老师以后会改变“政策”吧。

  • 相关阅读:
    C# GDI生成清晰【高质量】图片
    Myeclipse项目内容没有报错但是项目上面却有红色叉叉
    JRE System Library 与Java EE Libraries的区别
    [原创]Java导出Excel
    [原创]java获取word文档的条目化内容
    [原创]java获取word里面的文本
    各种java生成word解决方案的优缺点对比
    [原创]Java生成Word文档
    [原创]java实现word转pdf
    [原创]java调用PageOffice生成word
  • 原文地址:https://www.cnblogs.com/qzy7/p/11735896.html
Copyright © 2011-2022 走看看