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

实验任务详情:

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

实验代码一:

public class Mythread<tickets> implements Runnable {         
    private int tickets=1000;             
    private String name;             //对窗口署名
    public Mythread(String name){
        this.setName(name);             //对name属性赋值
    }
    public void run() {              
        for(int i=0;i<1000;i++){      
            synchronized (this){          
                if(tickets>0){
                    try {
                        Thread.sleep(1000);       
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()+"正在售票......  售票成功,剩余票:"+tickets--);
                }

            }

        }


    }
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

实验代码二:


public class test {
	public static void main(String[] args) {
        Mythread my=new Mythread<Object>(null);    
        Thread m1=new Thread(my,"售票口1");
        Thread m2=new Thread(my,"售票口2");
        Thread m3=new Thread(my,"售票口3");
        Thread m4=new Thread(my,"售票口4");
        Thread m5=new Thread(my,"售票口5");
        Thread m6=new Thread(my,"售票口6");
        Thread m7=new Thread(my,"售票口7");
        Thread m8=new Thread(my,"售票口8");
        Thread m9=new Thread(my,"售票口9");
        Thread m10=new Thread(my,"售票口10");    
        m1.start();
        m2.start();
        m3.start();
        m4.start();
        m5.start();
        m6.start();
        m7.start();
        m8.start();
        m9.start();
        m10.start();        //启动线程
    }
}

运行结果截图:

学习总结:
1.如果在类里要激活线程,必须先做好下面两项准备:
(1)此类必须是扩展Thread类,使自己成为它的子类;
(2)线程的处理必须编写在run方法里面。
2.run()方法是定义在Thread类里的一个方法,因此把线程的程序代码编写在run()方法内,所做的就是覆写操作;
3.runnazble接口里申明了抽象的run方法,因此必须在实现Runnable接口的类里明确定义run()方法;
4.在强制某一线程运行时,采用join()方法,在线程强制运行期间,其他线程无法运行,必须等待此线程完成后才可以继续执行;
5.当多个线程对象操纵同一个共享资源时,要使用synchronized关键字进行资源的同步处理。
6.继续撸起袖子加油干!!!

posted @ 2019-10-25 14:40  huanglexing  阅读(106)  评论(2编辑  收藏  举报