有参方法tryAcquire(int permits,long timeout,TimeUnit unit)的作用是在指定的时间timeout内尝试地获得permits个许可,如果获取不到则返回false。
下面semaphore.tryAcquire(2,2, TimeUnit.SECONDS)表示2秒内获取2个许可,获取不到则返回false
Semaphore semaphore = new Semaphore(2); if (semaphore.tryAcquire(2,2, TimeUnit.SECONDS)) { System.out.println(Thread.currentThread().getName() + "执行时间:" + System.currentTimeMillis()); semaphore.release(2); }