上一个问题传的图片有点错误,再重新传一下
下面是完整版的代码
下面是上面代码的运行结果
下面是另一段代码唯一不同就是休眠位置不同
下面是第二段代码的运行结果
我想问下第二段代码运行结果是正确的吗/?,为什么两次运行结果不一样?
正不正确主要就看操作的共享数据有没有问题,如果都是稳定的没有相同的就是正确的线程锁,sleep只是让当前线程睡眠了,不会释放掉锁,如果在拿到了锁
之后sleep的,那其他线程只能一直等待,如果没拿到锁就sleep的话就跟正常一样,其他的线程会去抢锁
sleep只会使当前线程休眠,不会释放锁。代码一由于睡眠的时候锁已经释放,所以被另外两个线程竞争到的概率非常大,而第二个就不一样了。