完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
一:实验代码
package demo;
public class MyThread 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 demo;
public class test {
public static void main(String[] args) {
MyThread mt=new MyThread();
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();
}
}
二:运行截图
对于本题还是可以很好地了解runnable接口的用途,对于解决资源共享同步操作实现同步代码块与同步方法的处理。
本周总结
(1)对于多线程取得和设置线程名称,线程的是否启动,线程的强制运行,线程的休眠,线程的礼让问题。
(2)对于java IO操作文件类——File的介绍与对File类主要方法与构造类的了解