自省自律自尊 2020-10-16 12:12 采纳率: 66.7%
浏览 102

我学习多线程时,老师写了一个在锁里面sleep的的例子,但是就结果来看是释放了锁,这是为什么呢?

我在B站上学习多线程,老师讲解同步方法的时候写了这样一个代码
图片说明
图片说明

他把Thread.sleep方法写在了synchronized修饰的Buy方法里面,按照我的逻辑来说,这个锁应该不会释放,那么结果就是所有的票被第一个人抢光,我自己也写了这样的一个代码,确实是被第一个人抢光了,但是老师的结果却是这样的

图片说明

这个我理解不了,他明明是把sleep写在synchronized修饰的Buy方法里面,为什么会释放锁呢?

  • 写回答

3条回答

  • Kuroro_Lucifer 2020-10-16 15:33
    关注

    我也是初学者,发表一下我的看法,你检查一下你的代码是不是加了static导致你锁住的是整个类,而截图中锁住的是一个实例,从而产生了题主说的输出结果差异

    评论

报告相同问题?