可以,这取决于释放信号之前做了哪些操作:如果一个箱子里放了20个苹果,同时只能有三个人一人访问一个苹果,就从箱子里拿出三个苹果放在1,2,3三个位置上供人访问.如果访问的人离开之前把他访问到的苹果放回了原位,那么下一个人访问到的还是原来的苹果,等于是即释放信号也释放资源.
如果每个访问的人离开之前都箱子里取出一个苹果替换掉他访问的苹果,那么下一个获得访问资格的人访问的就是一个新的苹果,直到箱子里没有苹果时停止访问.这就相当于释放信号不释放资源.可以把剩下的17个苹果放在List集合中,每个线程在释放信号之前都调用集合的remove(0)方法,把返回来的苹果替换掉原来的苹果,直到remove(0)返回null为止.
|