第九周学习总结&实验报告(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类:

猜你喜欢

转载自www.cnblogs.com/jzq93/p/11739404.html