java多线程安全同步问题

IDEA中同样的代码,在synchronized()里面放的同步监视器不同,一个是this、另一个是类.class,两者加了锁之后都没有安全问题,但是前者只是一个线程一直在运行,后者才会三个线程交替运行,改了sleep时间、线程优先级还是一样,想不通不应该是程序问题啊,知道的大佬帮帮忙,会不会是idea配置的问题?

img

img

不要用类名. class,new一个object对象锁即可。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

锁this和锁class 是不一样的,
this所得是当前对象,你这有三个对象即三把不同的锁,相当于没锁,会呈现三个线程都会去抢着运行
而class 所得是类的字节码信息,相当于只有一把锁,一个线程抢到了其他线程只能等其结束了才有机会拿到锁,所以会呈现只有一个线程运行结束然后再去运行别的,而你又设置了票的数量不能小于0,所以之后打印一个线程的抢票结果;

很高兴得到你的采纳!