请注意,FIFO排序必须适用于特定的内部
这些方法中的执行点。
来自doc
它们对内部执行点意味着什么?
最佳答案
该文档随后立即说:
因此,一个线程有可能在另一个线程之前调用获取,而在另一个线程之后到达排序点
这意味着这种情况是可能的:
thread 1 thread 2
-------- --------
calls acquire()
calls acquire()
acquire() does its job
acquire() does its job
(其中
acquires() does its job
是文档所指的“订购点”)简而言之:无法保证及时调用第一个调用
acquire()
的线程先获取信号量。可以保证的是,当它从acquire()
返回时,其他acquire()
调用方将不得不等待。这是极少数情况,但有可能发生。
关于java - 关于信号量类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16864641/