实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
实验代码:
package zy123;
class MyThread implements Runnable{
private int ticket =1000;
public void run() {
for(int i=0;i<1500;i++) {
synchronized(this) {
if(ticket>0){
try {
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" 卖:="+ticket--);
}
}
}
}
};
public class SyncDemo02{
public static void main(String args[]) {
MyThread my =new MyThread();
Thread t1=new Thread(my,"窗口1");
Thread t2=new Thread(my,"窗口2");
Thread t3=new Thread(my,"窗口3");
Thread t4=new Thread(my,"窗口4");
Thread t5=new Thread(my,"窗口5");
Thread t6=new Thread(my,"窗口6");
Thread t7=new Thread(my,"窗口7");
Thread t8=new Thread(my,"窗口8");
Thread t9=new Thread(my,"窗口9");
Thread t10=new Thread(my,"窗口10");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
t9.start();
t10.start();
}
}
实验截图:
思路:这道题参考了书上的270页等代码 使用synchronized 关键字同步数据 使之资源共享 改了一些部分
学习总结:
以上都是知识的关键点