75 |
|
} |
76 |
|
|
77 |
|
/** |
78 |
< |
* tryAcquire succeeds when sufficent permits, else fails |
78 |
> |
* tryAcquire succeeds when sufficient permits, else fails |
79 |
|
*/ |
80 |
|
public void testTryAcquireInSameThread() { |
81 |
|
Semaphore s = new Semaphore(2, false); |
380 |
|
} |
381 |
|
} |
382 |
|
|
383 |
+ |
/** |
384 |
+ |
* drainPermits reports and removes given number of permits |
385 |
+ |
*/ |
386 |
+ |
public void testDrainPermits() { |
387 |
+ |
Semaphore s = new Semaphore(0, false); |
388 |
+ |
assertEquals(0, s.availablePermits()); |
389 |
+ |
assertEquals(0, s.drainPermits()); |
390 |
+ |
s.release(10); |
391 |
+ |
assertEquals(10, s.availablePermits()); |
392 |
+ |
assertEquals(10, s.drainPermits()); |
393 |
+ |
assertEquals(0, s.availablePermits()); |
394 |
+ |
assertEquals(0, s.drainPermits()); |
395 |
+ |
} |
396 |
|
|
397 |
|
/** |
398 |
|
* reducePermits reduces number of permits |
446 |
|
} |
447 |
|
|
448 |
|
/** |
449 |
< |
* tryAcquire succeeds when sufficent permits, else fails |
449 |
> |
* tryAcquire succeeds when sufficient permits, else fails |
450 |
|
*/ |
451 |
|
public void testTryAcquireInSameThread_fair() { |
452 |
|
Semaphore s = new Semaphore(2, true); |
458 |
|
} |
459 |
|
|
460 |
|
/** |
461 |
< |
* tryAcquire(n) succeeds when sufficent permits, else fails |
461 |
> |
* tryAcquire(n) succeeds when sufficient permits, else fails |
462 |
|
*/ |
463 |
|
public void testTryAcquireNInSameThread_fair() { |
464 |
|
Semaphore s = new Semaphore(2, true); |
618 |
|
Thread t = new Thread(new Runnable() { |
619 |
|
public void run() { |
620 |
|
try { |
621 |
< |
s.acquire(2); |
622 |
< |
s.acquire(2); |
623 |
< |
s.release(4); |
621 |
> |
s.acquire(); |
622 |
> |
s.release(2); |
623 |
> |
s.acquire(); |
624 |
|
} catch(InterruptedException ie){ |
625 |
|
threadUnexpectedException(); |
626 |
|
} |
629 |
|
try { |
630 |
|
t.start(); |
631 |
|
Thread.sleep(SHORT_DELAY_MS); |
619 |
– |
s.release(6); |
620 |
– |
s.acquire(2); |
621 |
– |
s.acquire(2); |
632 |
|
s.release(2); |
633 |
+ |
s.acquire(2); |
634 |
+ |
s.release(1); |
635 |
|
t.join(); |
636 |
|
} catch( InterruptedException e){ |
637 |
|
unexpectedException(); |