@@ -19,6 +19,7 @@ public class QueueManager implements IQueueManager, AutoCloseable {
19
19
20
20
private final ScheduledExecutorService executorService = Executors .newSingleThreadScheduledExecutor ();
21
21
private final Semaphore semaphore ;
22
+ private final long queueResetTimeInMillis ;
22
23
23
24
public QueueManager (int size , int resetInSec ) {
24
25
this (size , resetInSec , resetInSec );
@@ -28,28 +29,28 @@ public QueueManager(int size, int queueResetTimeInSec, int delayInSec) {
28
29
this (size , queueResetTimeInSec , delayInSec , size );
29
30
}
30
31
31
- public QueueManager (int size ,
32
- int queueResetTimeInSec ,
33
- int delayInSec ,
34
- int initialSize ) {
32
+ public QueueManager (int size , int queueResetTimeInSec , int delayInSec , int initialSize ) {
35
33
this (size ,
36
34
(long ) queueResetTimeInSec * 1000 ,
37
35
(long ) delayInSec * 1000 ,
38
36
initialSize );
39
37
}
40
38
41
- public QueueManager (int size ,
42
- long queueResetTimeInMillis ,
43
- long delayInMillis ,
44
- int initialSize ) {
39
+ public QueueManager (int size , long queueResetTimeInMillis , long delayInMillis , int initialSize ) {
40
+ this .queueResetTimeInMillis = queueResetTimeInMillis ;
45
41
this .semaphore = new Semaphore (initialSize );
46
42
this .executorService .scheduleAtFixedRate (releaseLocks (size ), delayInMillis , queueResetTimeInMillis ,
47
43
TimeUnit .MILLISECONDS );
48
44
}
49
45
46
+ @ SuppressWarnings ("java:S899" )
50
47
@ Override
51
48
public void takeTurn () {
52
- semaphore .acquireUninterruptibly ();
49
+ try {
50
+ semaphore .tryAcquire (queueResetTimeInMillis , TimeUnit .MILLISECONDS );
51
+ } catch (InterruptedException e ) {
52
+ Thread .currentThread ().interrupt ();
53
+ }
53
54
}
54
55
55
56
private Runnable releaseLocks (int toRelease ) {
0 commit comments