如果信号量上没有可用的许可,我需要实现一个FIFO队列。
我的教授规定在考试期间只能使用acquire()
和release()
方法。
我的想法是使用tryAcquire()
方法来实现一个LinkedList,如果结果为false,则将当前线程添加到列表底部。
由于无法使用tryAcquire()
方法,我搜索并发现了这个结构。
例如,如果我初始化一个信号量:
Semaphore example = new Semaphore(5, true);
如果一个线程尝试在已经用完许可的信号量上使用acquire()
方法,会发生什么? 它会自动创建队列吗? 我需要以任何方式处理它还是过程自动进行?