- // 定义一个Ticket窗口,继承Thread类
- class Ticket extends Thread{
-
- // 定义票的数量
- private static int tickets = 100;
-
- // 重写run方法
- public void run(){
-
- // 使用循环
- while(true){
-
- // 判断票的数量是否满足大于0
- if(tickets > 0){
- System.out.println(getName()+ "出售第" + tickets + "张票");
- --tickets; // 放到这里自减1,会出现3个窗口同时出现出售第100张票的情况,放到输出语句里进行自减1就不会
- }else{
- break;
- }
- }
-
- }
-
- // 创建一个有参的构造方法
- public Ticket(String name){
- super(name);
- }
- }
- public class ThreadDemo4 {
- public static void main(String[] args) {
-
- // 创建两个线程
- Ticket t0 = new Ticket("窗口1");
- Ticket t1 = new Ticket("窗口2");
- Ticket t2 = new Ticket("窗口3");
-
- // 开启2个线程
- t0.start();
- t1.start();
- t2.start();
-
- }
- }
复制代码 ticket-- 放到判断输出语句的外边时,会有3个窗口都出售第100张票的情况,
放到输出语句里边进行自减1,就不会出现这种情况
为什么?
|
|