你没有理解锁的本质。。。。。
给你举个例子来理解一下吧。
想象一下:有一个热水器,有两个出水口(A,B),每个口都需要把卡贴在射频识别的模块上才能出水,但是只有一张卡。
你想一下,是不是两个出水口一次只能有一个出水?
如果像你的写法,就相当于两个出水口,都有自己的卡,可以同时出水。
可能例子举的不够形象,给你从代码上说一下吧
synchronized(A对象)
{
}
这里的对象A,相当于一个钥匙,当一个线程(C)先进入了synchronized代码块,相当于打开了一个门,就会执行代码块里面的内容,那么另一个线程(B),也执行到synchronized代码块时,发现这个钥匙(A)被线程C拿着,他打不开这个门,就会一直等啊,一直等,等到C的同步代码执行完了,把钥匙A交出来了,这时B就能拿钥匙A开B线程这个门了,即可以执行B的同步代码块了。。。。。
说的有点啰嗦,不过,应该能看懂吧? |