实验& 报告7

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

     //会出现每个线程都卖1000张票的情况,因为对象不唯一会导致每个线程对象都有一份独立的成员属性;

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

};
public class practice1 {
public static void main (String args[]) {
MyThread my = new MyThread();
Thread my1 = new Thread(my);
my1.setName("窗口1");

    Thread my2 = new Thread(my);
    my2.setName("窗口2");
    
    Thread my3 = new Thread(my);
    my3.setName("窗口3");
    
    Thread my4 = new Thread(my);
    my4.setName("窗口4");
    
    Thread my5 = new Thread(my);
    my5.setName("窗口5");
    
    Thread my6 = new Thread(my);
    my6.setName("窗口6");
    
    Thread my7 = new Thread(my);
    my7.setName("窗口7");
    
    Thread my8 = new Thread(my);
    my8.setName("窗口8");
    
    Thread my9 = new Thread(my);
    my9.setName("窗口9");
    
    Thread my10 = new Thread(my);
    my10.setName("窗口10");
    
    my1.start();
    my2.start();
    my3.start();
    my4.start();
    my5.start();
    my6.start();
    my7.start();
    my8.start();
    my9.start();
    my10.start();
     
}

}


本周总结
线程操作:注意方法


      //线程的休眠

在线程中允许一个线程进行暂时的休眠,直接使用Thread.sleep()方法即可。
sleep()–线程休眠
sleep()方法是Thread类中的一个静态方法,需要一个用于指定该线程休眠的时间,该时间以毫秒为单位。
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
static --- 说明可以由Thread类名称调用。
Throws ---表示如果有异常要在调用此方法处处理异常。所以sleep()方法要有InterruptedException 异常处理,而且sleep()调用方法通常为Thread.sleep(500) ;形式。
创建线程的另一种方法是实现Runnable接口。Runnable接口中只有一个run()方法,它非Thread类子类的类提供的一种激活方式。一个类实现Runnable接口后,并不代表
该类是一个“线程”类,不能直接运行,必须通过Thread实例才能创建并运行线程。

Runnable接口
定义实现Runnable接口的类,并实现该类中的run()方法。
建立一个Thread对象,并将实现的Runnable接口的类的对象作为参数传入Thread类的构造方法。
通过Thread类中的start()方法启动线程,并运行。
注:直接调用Thread类或Runnable类对象的run()方法是无法启动线程的,这只是一个简单的方法调用必须通过Thread方法中的start()才行。//

posted @ 2019-10-24 23:03  JCclub  阅读(120)  评论(0编辑  收藏  举报