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

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

实验任务详情:

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

实验源码

package 实验七;

class MyThread implements Runnable{
    
        private int ticket = 1000;
        
        public void run() {
            for(int i = 0; i <=999; i++) {
                   this.sale();
                   if(i == Math.sqrt(i) * Math.sqrt(i)) {
                       Thread.currentThread().yield();
                   }
                }
            }
        
         public synchronized void sale() {
                if(ticket > 0) {
                    try {
                        Thread.currentThread().sleep(1000);
                    }catch(InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()+"售票:ticket = " + ticket --);
                }
         }
}

package 实验七;

public class first {
    public static void main (String args[]) {
        MyThread my = new MyThread();
        for(int i = 1; i <= 10; i++) {
            new Thread(my,"窗口"+ I ).start();
        }   
    }
}

实验结果

第九周总结

10月21日

要想实现多线程,必须在主线程中创建新的线程对象。线程一般具有五种状态,即创建,就绪,运行,阻塞,终止。
1创建状态
新建一个线程对象可采用Thread类的构造方法实现。
2就绪状态
新建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列排队,
等待CPU服务,这就表明它已经具备了运行条件。
3运行状态
当就绪状态的线程被调用并获得处理器资源时,线程就进入了运行状态。run()方法定义了该线程的操作和功能。
4堵塞状态

5死亡状态。
线程调用stop()方法时或run()方法执行结束后,即处于死亡状态。处于死亡状态的线程不具备有继续运行的能力。

10月23日

想要操作D盘下的test文件,则路径必须修改为“d:\test.txt”

d:"+File.separator+"test"+File.separator+demo.txt"

public String[] list ():列出全部名称,返回一个字符串数组。
public File[] listFiles():列出完整路径,返回一个File对象数组。

posted @ 2019-10-25 22:43  纬线  阅读(131)  评论(0编辑  收藏  举报