我也举个例子吧,屋子里有若干文件,两个人分别进去取,门上显示有文件还剩多少份,还剩有文件的时候才开门。小王来的时候,门上显示还剩一份,门可以开,小王进去了。可是小王在里面耽搁了一下,文件还没到手的时候小李也来了。因为小王虽然在门里但是他还没拿到文件,所以门上依然显示还有一份文件,门依然可以开。于是门里只有一份文件了,但是有两个人,那文件就不够用了。
平时当然是一个人拿了,另一个人就没份了。但是java里面不一样,1后面还有0,0后面还有-1,所以java里,两个线程都继续执行,一个获取1,一个就获取0了。 但是我们知道现实中0是没有文件的,这就跟事实相悖了,安全问题就出来了 |