Please, review the following test change Issue : https://bugs.openjdk.java.net/browse/JDK-8077327 Webrev: http://cr.openjdk.java.net/~jbachorik/8077327/webrev.00
This fix is for an intermittent failure due to timing issues. The test is using an arbitrary waiting period to allow the tested thread to arrive to the requested state. Usually it works fine but under eg. heavy load this strategy will fail. The proposed solution is to explicitly check for the test thread arriving to the requested state instead of waiting eg. 10ms.
I also took the liberty of removing the custom Semaphore implementation and replacing its usage with java.util.concurrent.Phaser
Thanks, -JB-