实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
实验代码:
package gch;
public class huoche implements Runnable {
private int ticket=25;
public void run() {
for(int i=0;i<25;i++) {
synchronized(this) {
if(ticket>0) {
try {
Thread.sleep(1000);
}catch(Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"运行,ticket="+ticket--);
}
}
}
}
}
package gch;
public class test {
public static void main(String[] args) {
huoche mt=new huoche();
Thread t1=new Thread(mt,"A窗口");
Thread t2=new Thread(mt,"B窗口");
Thread t3=new Thread(mt,"C窗口");
Thread t4=new Thread(mt,"D窗口");
Thread t5=new Thread(mt,"E窗口");
Thread t6=new Thread(mt,"F窗口");
Thread t7=new Thread(mt,"H窗口");
Thread t8=new Thread(mt,"I窗口");
Thread t9=new Thread(mt,"J窗口");
Thread t0=new Thread(mt,"K窗口");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
t9.start();
t0.start();
}
}
运行截图:
学习总结:
本周实验 老师在上课的时候都讲过了的,基本上都没有什么问题。无论使用哪种方式,最终都必须依靠Thread才能启动多线程
还有主要是要区分Thread类和Runnable接口的区别,如果一个类继承Thread类,则不适合于多个线程共享资源,而实现了Runnable接口,就可以方便地实现资源共享。Thread类是Runnable接口地子类,而且
使用Runnable接口可以避免单继承局限,以及更加方便地实现数据共享。