一、完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
代码:
public class Mythread extends Thread {
private int t=1000;
public int getT() {
return t;
}
public void setT(int t) {
this. = t;
}
public void run() {
for(int i = 0;i<5000;i++) {
synchronized(this) {
if(t>0) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"卖票 = "+t--);
}
}
}
}
}
public class text {
public static void main(String[] args) {
Mythread m = new Mythread();
Thread m0 = new Thread(m,"窗口1") ;
Thread m1 = new Thread(m,"窗口2") ;
Thread m2 = new Thread(m,"窗口3") ;
Thread m3 = new Thread(m,"窗口4") ;
Thread m4 = new Thread(m,"窗口5") ;
Thread m5 = new Thread(m,"窗口6") ;
Thread m6 = new Thread(m,"窗口7") ;
Thread m7 = new Thread(m,"窗口8") ;
Thread m8 = new Thread(m,"窗口9") ;
Thread m9 = new Thread(m,"窗口10") ;
m0.start();
m1.start();
m2.start();
m3.start();
m4.start();
m5.start();
m6.start();
m7.start();
m8.start();
m9.start();
}
}
结果
学习总结
1、学习了线程等一系列相关的知识
2、认识了Thread类和实现Runnable接口以及它们两者之间的区别
3、取得和设置线程名称、判断线程是否启动、线程的强制转换、线程的休眠、中断、礼让。
4、同步与死锁固。