1. The current implementation for HJ-lib uses thread blocking operations for blocking constructs such as end of finish, future get, and phaser wait operation. These can result in the worker threads getting blocked. The runtime compensates by allocating more worker thread, but eventually when a configured maximum number of blocked threads is reached the runtime gives up by throwing an exception. To avoid this scenario users can either configure the maximum number of worker thread to a larger value or avoid using blocking operations in their solutions.

    HJ-lib can be configured to use more worker threads by setting the following property before calling initializeHabanero():

     System.setProperty(HjSystemProperty.maxThreads.propertyKey(), "100");