完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
public class MyThread implements Runnable{
private int ticket=1000;
public void run() {
for(int i=0;i<1001;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(this) {
if(ticket>0) {
System.out.println(Thread.currentThread().getName()+"卖票:ticket="+ticket--);
}
}
}
}
}
package demo3;
public class Test {
public static void main(String[] args) {
MyThread mt = new MyThread();
Thread t1=new Thread(mt,"窗口1");
Thread t2=new Thread(mt,"窗口2");
Thread t3=new Thread(mt,"窗口3");
Thread t4=new Thread(mt,"窗口4");
Thread t5=new Thread(mt,"窗口5");
Thread t6=new Thread(mt,"窗口6");
Thread t7=new Thread(mt,"窗口7");
Thread t8=new Thread(mt,"窗口8");
Thread t9=new Thread(mt,"窗口9");
Thread t10=new Thread(mt,"窗口10");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
t9.start();
t10.start();
}
}
学习总结
1.线程是指程序的运行流程。“多线程“的机制可以同时运行多个程序块,使程序运行效率更高,也解决了传统程序设计语言所无法解决的问题。
2.JAVA IO
目前我们学习的是File类,使用File类可以进行创建或删除文件等常用操作。
注意:在使用该类时,必须向该类的构造方法中传递一个文件路径。
不同操作系统的路径分隔符也是不同的,windows的是“”,Linux的是“/”。
所有的操作是由JAVA虚拟机进行的,所以会出现一定的延迟,所以在进行文件操作时要考虑延迟的影响。
实验总结
整个作业完成过程有点艰辛不断出错,还好有个大佬指导我,在书上也找到类似题目,最终解决。