同样的多线程代码在idea中,一个能跑一个不能跑,求解惑!!!

#####idea代码运行无结果问题

同样都是这个代码,很简单的一个多线程实现,在同一个包下不同文件中

img

第一次写的过了

img

第二次重新建了个文件再写,运行后没有结果

img

img


确认过很多遍代码,一摸一样(除了实现类的类名和主方法所在类名不同)
使用的是IDEA2021.2,如果使用复制粘贴的话就没问题,但在同一包下创建另一个文件,重新手敲一遍就出现了上述问题,求解惑

按道理来说,应该是第一个没有运行结果,第二个有运行结果才对,
你是不是因为你的票是100 一个判断条件是>100 一个是》0

同步的锁改为this,
一般共享变量不用静态变量,而是线程实现Runnable接口达到共享变量的目的。
参考:

import java.util.Date;

public class Ticket implements Runnable{

    //车票的数量
    int count=500;

    @Override
    public void run() {
        while(count>0) {
            try {
                /*同步:synchronized(锁),锁就是一个对象名称,通常可以直接传this
                 * 在同步语句块中的语句,确保在同一时刻只能由一个线程执行(互斥)
                 * */
                synchronized (this) {
                    System.out.println("窗口名称:"+Thread.currentThread().getName()+",车票编号:"+count+",销售时间:"+ new Date().toLocaleString());
                    count--;
                }
                Thread.sleep(10);
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
}

public class TicketTest {

    public static void main(String[] args) {
        
        Ticket ticket = new Ticket();
        //模拟4个售票窗口
        Thread t1 = new Thread(ticket,"窗口1:");
        Thread t2 = new Thread(ticket,"窗口2:");
        Thread t3 = new Thread(ticket,"窗口3:");
        Thread t4 = new Thread(ticket,"窗口4:");
        Thread t5 = new Thread(ticket,"窗口5:");
        Thread t6 = new Thread(ticket,"窗口6:");
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();
        t6.start();
        
        
    }
}