第九周学习总结&实验报告(7)

完成火车站售票程序的模拟。
要求:
(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类:

posted @ 2019-10-25 17:57  嘎嘣1  阅读(205)  评论(1编辑  收藏  举报