Attention!! Please do not use tryAcquire()  methods unless you have a clear understanding about it. Or you must use acquire() method. Because of acquire(),  acquires a permit from this semaphore, blocking until one is available, or the thread is interrupted. For tryAcquire(), Acquires a permit from this semaphore, only if one is available at the time of invocation, no blocking here