三个窗口同时卖票 用 实现Runnable方式
程序员文章站
2024-03-05 18:44:07
...
多线程买票
大致分析:
多窗口即多线程,这里的窗口个数就是线程对象数
先设置总票数 在run方法里实现买票 借助循环重复完成买票这一动作 每卖完一张票总数–(减减) 直到票卖完退出循环
最后开启线程 执行run方法
public class ThreeRun implements Runnable{
private static int num=20;//定义总票数
private static Object o=new Object();//定义一个静态对象
@Override
public void run() {
//循环卖票
while (true){
try {
//模拟卖票耗时操作 (单位:毫秒值)
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//同步锁
synchronized (o){
if (num>0){
System.out.println("还有"+num+"张票");
num--;
}else {
System.out.println("票已售空");
System.exit(0);
}
}
}
}
//当两个并发线程(th1和th2)访问同一个对象中的synchronized代码块时在同一
//时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完
//这个代码块以后才能执行该代码块。Thread1和thread2是互斥的,因为在执行
//synchronized代码块时会锁定当前的对象,只有执行完该代码块才能释放该对
//象锁,下一个线程才能执行并锁定该对象。
public static void main(String[] args) {
//三个线程 相当于开启了三个窗口同时卖票
ThreeRun th1 = new ThreeRun();
Thread t1 = new Thread(th1);
t1.start();
ThreeRun th2 = new ThreeRun();
Thread t2 = new Thread(th2);
t2.start();
ThreeRun th3 = new ThreeRun();
Thread t3 = new Thread(th3);
t3.start();
}
}
运行结果如下:
上一篇: 8.25重点内容
下一篇: Android 动态高斯模糊效果教程