关于信号量类

时间:2013-05-31 19:36:17

标签: java semaphore doc

  

请注意,FIFO排序必然适用于特定内部   这些方法中的执行点。

来自doc

内部执行点意味着什么?

2 个答案:

答案 0 :(得分:4)

之后文件立即说:

  

因此,一个线程可以在另一个线程之前调用获取,但是在另一个线程之后到达排序点

这意味着可能出现这种情况:

thread 1                 thread 2
--------                 --------
calls acquire()
                         calls acquire()
                         acquire() does its job
acquire() does its job

(其中acquires() does its job是doc所称的“排序点”)

简而言之:无法保证,及时说,第一个调用acquire()的线程首先获取信号量。 保证的是,当它从acquire()返回时,其他acquire()来电者将不得不等待。

这种情况很少见,但可能。

答案 1 :(得分:1)

它们指的是acquire()方法内部的执行点。它们意味着,在acquire()的实现中,有一些'排序点',第一个到达那里的线程将是第一个离开的。因此,如果线程A接到调用,则在B之前输入acquire(),但是B首先到达排序点,B将首先出现(尽管进入获取秒)。