【发布时间】:2018-01-23 12:01:20
【问题描述】:
如果信号量上没有可用的许可,我需要实现一个 FIFO 队列。
我的教授指定在考试期间我们将只能使用acquire() 和release() 方法。
我的想法是使用tryAcquire() 方法实现一个LinkedList,如果结果为假,则将currentThread 添加到列表的底部。
无法使用我搜索的tryAcquire() 方法,我注意到了这个构造。
如果我初始化一个信号量,例如:
Semaphore example = new Semaphore(5, true);
如果线程尝试在已用尽其许可的信号量上使用acquire() 方法会发生什么?它会自动创建队列吗?我必须以任何方式处理它还是该过程是自动的?
【问题讨论】: